• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2016年5月>
            24252627282930
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            收藏夾

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            大家開(kāi)發(fā)網(wǎng)絡(luò)程序,經(jīng)常要連接其他主機(jī),如果在xp上運(yùn)行,一定會(huì)提示你,只有選擇解除阻止才能實(shí)現(xiàn)正常的網(wǎng)絡(luò)連接.那么有沒(méi)有辦法在防火墻的例外列表里面通過(guò)編程的方式加入自己的程序呢?
             當(dāng)然有了,不然就不要介紹了
            xp的系統(tǒng)目錄下面有個(gè)hnetcfg.dll就是這個(gè)編程接口,頭文件是netfw.h,初始化代碼如下:
            INetFwProfile* m_pFireWallProfile=NULL;

            HRESULT hr  =  S_FALSE;
                INetFwMgr
            *  fwMgr  =  NULL;
                INetFwPolicy
            *  fwPolicy  =  NULL;

                FW_ERROR_CODE ret 
            =  FW_NOERROR;
                
            try
                
            {
                    
            if ( m_pFireWallProfile )
                        
            throw  FW_ERR_INITIALIZED;

                    
            //  Create an instance of the firewall settings manager.
                    hr  =  CoCreateInstance( __uuidof(NetFwMgr), NULL, CLSCTX_INPROC_SERVER, __uuidof( INetFwMgr), ( void ** ) & fwMgr );

                    
            if ( FAILED( hr ))
                        
            throw  FW_ERR_CREATE_SETTING_MANAGER;

                    
            //  Retrieve the local firewall policy.
                    hr  =  fwMgr -> get_LocalPolicy(  & fwPolicy );
                    
            if ( FAILED( hr ))
                        
            throw  FW_ERR_LOCAL_POLICY;

                    
            //  Retrieve the firewall profile currently in effect
                    hr  =  fwPolicy -> get_CurrentProfile(  & m_pFireWallProfile );
                    
            if ( FAILED( hr ))
                        
            throw  FW_ERR_PROFILE;

                }

                
            catch ( FW_ERROR_CODE nError)
                
            {
                    ret 
            =  nError;
                }


                
            if ( fwPolicy )
                    fwPolicy
            -> Release();
                
            if ( fwMgr )
                    fwMgr
            -> Release();

                
            return  ret;
            將程序名稱加入例外列表:
            WinXPSP2FireWall::AddApplication( const wchar_t* lpszProcessImageFileName, const wchar_t* lpszRegisterName )
            {
                FW_ERROR_CODE ret 
            = FW_NOERROR;
                HRESULT hr;
                BOOL bAppEnable;
                BSTR bstrProcessImageFileName 
            = NULL;
                BSTR bstrRegisterName 
            = NULL;
                INetFwAuthorizedApplication
            * pFWApp = NULL;
                INetFwAuthorizedApplications
            * pFWApps = NULL;

                
            try
                
            {
                    
            if( m_pFireWallProfile == NULL )
                        
            throw FW_ERR_INITIALIZED;
                    
            if( lpszProcessImageFileName == NULL || lpszRegisterName  == NULL )
                        
            throw FW_ERR_INVALID_ARG;

                    
            // First of all, check the application is already authorized;
                    FW_ERROR_CODE  nError = this->IsAppEnabled( lpszProcessImageFileName, bAppEnable );
                    
            if( nError != FW_NOERROR )
                        
            throw nError;

                    
            // Only add the application if it isn't authorized
                    if( bAppEnable == FALSE )
                    
            {
                        
            // Retrieve the authorized application collection
                        hr = m_pFireWallProfile->get_AuthorizedApplications( &pFWApps );
                        
            if( FAILED( hr ))
                            
            throw FW_ERR_AUTH_APPLICATIONS;

                        
            // Create an instance of an authorized application
                        hr = CoCreateInstance( __uuidof(NetFwAuthorizedApplication), NULL, CLSCTX_INPROC_SERVER, __uuidof(INetFwAuthorizedApplication), (void**)&pFWApp);
                        
            if( FAILED( hr ))
                            
            throw FW_ERR_CREATE_APP_INSTANCE;

                        
            // Allocate a BSTR for the Process Image FileName
                        bstrProcessImageFileName = SysAllocString( lpszProcessImageFileName );
                        
            if( SysStringLen( bstrProcessImageFileName ) == 0)
                            
            throw FW_ERR_SYS_ALLOC_STRING;

                        
            // Set the process image file name
                        hr = pFWApp->put_ProcessImageFileName( bstrProcessImageFileName );
                        
            if( FAILED( hr ) )
                            
            throw FW_ERR_PUT_PROCESS_IMAGE_NAME;

                        
            // Allocate a BSTR for register name
                        bstrRegisterName = SysAllocString( lpszRegisterName );
                        
            if( SysStringLen( bstrRegisterName ) == 0)
                            
            throw FW_ERR_SYS_ALLOC_STRING;
                        
            // Set a registered name of the process
                        hr = pFWApp->put_Name( bstrRegisterName );
                        
            if( FAILED( hr ))
                            
            throw FW_ERR_PUT_REGISTER_NAME;
                        
                        
            // Add the application to the collection
                        hr = pFWApps->Add( pFWApp );
                        
            if( FAILED( hr ))
                            
            throw FW_ERR_ADD_TO_COLLECTION;
                    }

                }

                
            catch( FW_ERROR_CODE nError )
                
            {
                    ret 
            = nError;
                }


                SysFreeString( bstrProcessImageFileName );
                SysFreeString( bstrRegisterName );

                
            if( pFWApp )
                    pFWApp
            ->Release();
                
            if( pFWApps )
                    pFWApps
            ->Release();

                
            return ret;
            }

             

            posted on 2007-09-24 14:57 聶文龍 閱讀(928) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Visual C++
            噜噜噜色噜噜噜久久| 久久国产成人午夜aⅴ影院| 26uuu久久五月天| 久久人人爽人人爽人人片AV不| 久久av高潮av无码av喷吹| av午夜福利一片免费看久久| 伊人久久精品无码二区麻豆| 久久人人爽人人爽人人片AV麻烦| 久久91精品国产91| 一本色道久久99一综合| 久久婷婷国产剧情内射白浆 | 久久精品国产99久久久古代| 久久夜色精品国产www| 久久这里有精品视频| 欧美黑人激情性久久| 久久无码人妻一区二区三区午夜| 色偷偷久久一区二区三区| 人妻精品久久久久中文字幕69 | 午夜精品久久久久久久| 性做久久久久久久| 国产日产久久高清欧美一区| 国产成人久久久精品二区三区 | 日本人妻丰满熟妇久久久久久| 久久亚洲精品成人av无码网站| 久久国产精品一区二区| 久久久久国产精品嫩草影院| 久久亚洲AV成人无码软件| 国产成人久久AV免费| 久久婷婷五月综合成人D啪| 少妇久久久久久被弄高潮| 一本大道久久a久久精品综合 | 婷婷综合久久中文字幕蜜桃三电影 | 伊人久久一区二区三区无码| 色诱久久久久综合网ywww| 久久精品国产一区二区三区不卡| AV无码久久久久不卡蜜桃| 天天爽天天爽天天片a久久网| 国产69精品久久久久APP下载| 国产亚洲色婷婷久久99精品| 欧美亚洲另类久久综合婷婷 | 丰满少妇人妻久久久久久|