随笔 - 4  文章 - 0 评论 - 19 trackbacks - 1
<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

与我联系

搜索

 

常用链接

留言簿

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

     在编程控制防火墙前先要有个前提,就是你必须是管理员权限, 这样本例的程序才能用"Run as administrator"的方式运行,并成功修改. 如果你本身就是用Administrator这个用户登录的话,直接运行就行了. 建议最好在这个用户下来调试程序.
     本程序只是个初始的例子,里面的功能只开发了一部分,各位有兴趣的话可以继续深入运用. 像Vista的防火墙就比较Bt,除了基本设定外,在"Control Panel\Administrative Tools\Windows Firewall with Advanced Security" 还有高级设定,好像用程序都可控制.
    FireWallManager 程序主要功能有
      1. public void FireWallTrigger( bool enable )  //开关防火墙. 貌似在Vista里面有问题,XP sp2好像可以. 但是用INetFwPolicy2.set_FirewallEnabled的方法的话,Vista也能搞定.
      2.  public void FireWallService( string name, bool enable )  //开关防火墙服务程序,一般里面的 File and Printer Sharing 服务比较有用.
      3.  public bool AddPort( string portName, int portNumber, string protocol )   // 开启一个端口.
      4.  public bool RemovePort( int portNumber, string protocol )          //删除开启的端口
      5.  public bool AddAplication( string discriptionName, string fileName )   //开启放行应用程序
      6.  public bool RemoveApplication( string fileName )         // 关闭放行的应用程序.

里面还有个 protected Object getInstance( String typeName ) 本来是用CLSID来实例化那些接口的,后来发现ProgID其实更简单,不需要查,里面有个规律,只需把接口的INet删掉就是ProgID了. 如 INetFwOpenPort port = ( INetFwOpenPort )Activator.CreateInstance( Type.GetTypeFromProgID( "HNetCfg.FwOpenPort" ) ); 中 INetFwOpenPort 与 FwOpenPort.
     首先,创建一个Console程序,在程序中添加引用,在COM对象中找到"NetFwTypeLib" ,添加即可. 防火墙主要是靠这个对象操作的. 貌似不止Vista, Xp也是一样的。核心程序如下:

FireWallManager.cs

程序代码如下:
http://files.cnblogs.com/phytan/FirewallManager.rar

最后,再给一个更简单的操作防火墙的方法,其实Vista中用netsh这个命令行程序就可以操作防火墙了。

netsh firewall set service all enable  就可以开启所有服务,很简单。
netsh firewall add portopening TCP 12345 "Testaddport"  可以开启一个12345的TCP端口。
还有 netsh advfirewall 等,可以操作更多选项。

参考:
http://danielw.blog.de/2007/01/06/windows_firewall_configuration~1521163
http://www.codeproject.com/useritems/enable_disable_firewall.asp
http://www.codeproject.com/vb/net/WinNetConn.asp
http://www.codeproject.com/useritems/FirewallSetupAction.asp
http://www.codeproject.com/w2k/WinXPSP2Firewall.asp
http://msdn2.microsoft.com/en-us/library/aa365309.aspx
http://www.cnblogs.com/appleseeker/archive/2007/07/10/812907.html
posted on 2007-07-11 18:32 谭谨 阅读(2475) 评论(5)  编辑 收藏 网摘 所属分类: Network

FeedBack:
#1楼 2007-07-12 09:18 路过[未注册用户]
非常有用,感谢!
  回复  引用    
#2楼 2008-06-23 17:38 咖啡猪      
INetFwPolicy2 这个是什么类型啊?怎么我在编译时提示“无法找到此类型”?
  回复  引用  查看    
#3楼 2008-06-23 18:51 phytan[未注册用户]
程序中添加引用,在COM对象中找到"NetFwTypeLib"
  回复  引用    
#4楼 2008-06-24 09:19 咖啡猪      
我添加了对NetFwTypeLib的引用,不过还是没那个INetFwPolicy2,只有INetFwPlicy,难道是操作系统的原因?
我的系统:Xp(Sp2) + Vs2005(sp1)

  回复  引用  查看    
莫谈国是!!!
  回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 814474




相关文章:

相关链接: