在Vista中编程控制防火墙设定

丹车仔

丹车仔

2016-02-19 13:48

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的在Vista中编程控制防火墙设定教程,一起来看看吧!超容易上手~
在编程控制防火墙前先要有个前提,就是你必须是管理员权限, 这样本例的程序才能用"Run as administrator"的方式运行,并成功修改。 如果你本身就是用Administrator这个用户登录的话,直接运行就行了。 建议最好在这个用户下来调试程序。

  本程序只是个初始的例子,里面的功能只开发了一部分,各位有兴趣的话可以继续深入运用。 像Vista的防火墙就比较Bt,除了基本设定外,在"Control PanelAdministrative ToolsWindows 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 ) //删除开启的端口

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  5. public bool AddAplication( string discriptionName, string fileName ) //开启放行应用程序

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  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
using System;
using System.Collections.Generic;
using System.Text;
using NetFwTypeLib;
namespace FirewallManager
{
class FwManager
{
private INetFwMgr NetFwMgr;
private INetFwProfile NetFwProfile;
private INetFwPolicy2 NetFwPolicy2; //this interface contains lots of usefull functions.
public FwManager()
{
//Create Com Object
//Type NetFwMgrType = Type.GetTypeFromCLSID( new Guid( "{304CE942-6E39-40D8-943A-B913C40C9CD4}" ) );
Type NetFwMgrType = Type.GetTypeFromProgID( "HNetCfg.FwMgr" );
object NetFwMgrObject = Activator.CreateIn
stance( NetFwMgrType );
NetFwMgr = ( INetFwMgr )NetFwMgrObject;
NetFwProfile = NetFwMgr.LocalPolicy.CurrentProfile;
Type NetFwPolicy2Type = Type.GetTypeFromProgID( "HNetCfg.FwPolicy2" );
object NetFwPolicy2Object = System.Activator.CreateInstance( NetFwPolicy2Type );
NetFwPolicy2 = ( INetFwPolicy2 )NetFwPolicy2Object;
}
public void ShowInfo()
{
switch( NetFwProfile.Type )
{
case NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_DOMAIN:
Console.WriteLine( "Network Profile Type1: " + "Domain" );
break;
case NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_STANDARD:
Console.WriteLine( "Network Profile Type1: " + "Standard" );
break;
case NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_CURRENT:
Console.WriteLine( "Network Profile Type1: " + "Current" );
break;
case NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_TYPE_MAX:
Console.WriteLine( "Network Profile Type1: " + "Max" );
break;
}
switch( ( NET_FW_PROFILE_TYPE2_ )NetFwPolicy2.CurrentProfileTypes )
{
case NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN:
Console.WriteLine( "Network Profile Type2: " + "Domain" );
break;
case NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE:
Console.WriteLine( "Network Profile Type2: " + "Private" );
break;
case NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC:
Console.WriteLine( "Network Profile Type2: " + "Public" );
break;
case NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_ALL:
Console.WriteLine( "Network Profile Type2: " + "All" );
break;
}
Console.WriteLine( "Firewall Enabled: " + NetFwProfile.FirewallEnabled );
Console.WriteLine( "Exceptions Not Allowed: " + NetFwProfile.ExceptionsNotAllowed );
Console.WriteLine( "Notifications Disabled: " + NetFwProfile.NotificationsDisabled );
//Console.WriteLine("UnicastResponsestoMulticastBroadcastDisabled: " + NetFwProfile.UnicastResponsestoMulticastBroadcastDisabled);
//Remote Admin
INetFwRemoteAdminSettings RASettings = NetFwP
rofile.RemoteAdminSettings;
Console.WriteLine( "Remote Administration Enabled: " + RASettings.Enabled );
switch( RASettings.IpVersion )
{
case NET_FW_IP_VERSION_.NET_FW_IP_VERSION_V4:
Console.WriteLine( "Remote Administration IP Version: V4" );
break;
case NET_FW_IP_VERSION_.NET_FW_IP_VERSION_V6:
Console.WriteLine( "Remote Administration IP Version: V6" );
break;
case NET_FW_IP_VERSION_.NET_FW_IP_VERSION_MAX:
Console.WriteLine( "Remote Administration IP Version: MAX" );
break;
case NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY:
Console.WriteLine( "Remote Administration IP Version: ANY" );
break;
}
switch( RASettings.Scope )
{
case NET_FW_SCOPE_.NET_FW_SCOPE_ALL:
Console.WriteLine( "Remote Administration Scope: ALL" );
break;
case NET_FW_SCOPE_.NET_FW_SCOPE_CUSTOM:
Console.WriteLine( "Remote Administration Scope: Custom" );
break;
case NET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNET:
Console.WriteLine( "Remote Administration Scope: Local Subnet" );
break;
case NET_FW_SCOPE_.NET_FW_SCOPE_MAX:
Console.WriteLine( "Remote Administration Scope: MAX" );
break;
}
// ICMP
INetFwIcmpSettings icmpSettings = NetFwProfile.IcmpSettings;
Console.WriteLine( "ICMP Settings:" );
Console.WriteLine( " AllowOutboundDestinationUnreachable: " + icmpSettings.AllowOutboundDestinationUnreachable );
Console.WriteLine( " AllowOutboundSourceQuench: " + icmpSettings.AllowOutboundSourceQuench );
Console.WriteLine( " AllowRedirect: " + icmpSettings.AllowRedirect );
Console.WriteLine( " AllowInboundEchoRequest: " + icmpSettings.AllowInboundEchoRequest );
Console.WriteLine( " AllowInboundRouterRequest: " + icmpSettings.AllowInboundRouterRequest );
Console.WriteLine( " AllowOutboundTimeExceeded: " + icmpSettings.AllowOutboundTimeExceeded );
Console.WriteLine( " AllowOutboundParameterProblem: " + icmpSettings.AllowOutboundParameterProblem );
Console
.WriteLine( " AllowInboundTimestampRequest: " + icmpSettings.AllowInboundTimestampRequest );
Console.WriteLine( " AllowInboundMaskRequest: " + icmpSettings.AllowInboundMaskRequest );
// Gloabal Open ports
foreach( INetFwOpenPort port in NetFwProfile.GloballyOpenPorts )
{
Console.WriteLine( "Open port: " + port.Name + ":" + port.Port + ", " + port.Protocol + " " + port.Enabled );
}
// Services
foreach( INetFwService serv in NetFwProfile.Services )
{
Console.WriteLine( "Service: " + serv.Name + ": " + serv.Enabled );
}
// Autorised Applications
foreach( INetFwAuthorizedApplication app in NetFwProfile.AuthorizedApplications )
{
Console.WriteLine( "AuthorizedApplication: " + app.Name + ": " + app.Enabled );
}
Console.WriteLine();
}
public void FireWallTrigger( bool enable )
{
try
{
NetFwProfile.FirewallEnabled = enable;
}
catch( Exception e )
{
Console.WriteLine( e.Message );
}
//try
//{
// NetFwPolicy2.set_FirewallEnabled( NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, enable );
/
展开更多 50%)
分享

猜你喜欢

在Vista中编程控制防火墙设定

编程语言 网络编程
在Vista中编程控制防火墙设定

防火墙入门:什么是防火墙

电脑网络
防火墙入门:什么是防火墙

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

向日葵远程控制软件能轻松穿透防火墙

电脑网络
向日葵远程控制软件能轻松穿透防火墙

再谈防火墙及防火墙的渗透

电脑网络
再谈防火墙及防火墙的渗透

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎么关闭防火墙 教你简单关闭防火墙方法

计算机应用技术
怎么关闭防火墙 教你简单关闭防火墙方法

Win XP中的防火墙

电脑网络
Win XP中的防火墙

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

优化系统BIOS的14大招式

优化系统BIOS的14大招式

Win10 9879预览版CPU占用过高如何处理?

Win10 9879预览版CPU占用过高如何处理?
下拉加载更多内容 ↓