首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 黑客知识 → 黑客进阶 → 文章内容

如何让你的程序安全通过windows防火墙--程序,安全通过,windows,防火墙

作者:佚名  来源:网上收集  发布时间:2007-8-20 0:13:56
大家开发网络程序,经常要连接其他主机,如果在xp上运行,一定会提示你,只有选择解除阻止才能实现正常的网络连接.那么有没有办法在防火墙的例外列表里面通过编程的方式加入自己的程序呢?
 当然有了,不然就不要介绍了
xp的系统目录下面有个hnetcfg.dll就是这个编程接口,头文件是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;
}
[] [返回上一页] [打 印]
  • 上一篇文章:如何透过程序来控制 Windows (XP) 防火墙的开关--程序,控制,Windows,XP,防火墙,开关
  • 下一篇文章:动易2006_SP6最新漏洞得到管理员密码--动易2006_SP6,漏洞,得到管理员密码,管理员,密码

  • 相关文章:
  • 嗅探的时候,防火墙能发现吗?
  • [图文]秘密穿过内网防火墙(图)--穿过,内网,防火墙
  • 找出通病 通杀国内软件防火墙--国内,软件,防火墙
  • 瑞星2006版产品防火墙应用技巧(二)--瑞星,2006版,...
  • [图文]瑞星2006版产品防火墙应用技巧(一)--瑞星,2...
  • 如何让你的SQL运行得更快--SQL,运行
  • 命令行下配置XP2防火墙--命令行,配置,XP2,防火墙
  • 专家视点:防火墙防控DDOS攻击三步曲--专家,视点,防...
  • 揭密防火墙核心技术--揭密,防火墙,核心技术
  • RedHat Linux下防火墙配置入门必学--RedHat,Linux,防...
  • [图文]肯德基中国店防火墙应用案例--肯德基,中国店,...
  • 读者评论:没有防火墙虽可行但并不理想--读者,评论,防...
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号