AppleSeeker's Tech Blog
Welcome to AppleSeeker's space
博客园
首页
新文章
新随笔
订阅
管理
posts - 45, comments - 405, trackbacks - 2
访问Vista防火墙
Vista下的防火墙的访问和XP访问方式有很大区别
XP有2种方法,但是Vista下目前还没有比较全面能够分析防火墙的所有设置
先将我的个人心得和大家分享下
1。通过注册表方式访问:
防火墙的很多设置都存放在注册表中,具体的键值如下:
在HKEY_LOCAL_MACHINE\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy下DomainProfile中的内容为机器加入域后存放的信息
StandardProfile中的内容为机器不加入域存放的信息
在这2个key下同样有3个键值
EnableFirewall:防火墙开启
DoNotAllowExceptions:不允许例外
DisableNotifications:提示信息
在这2个Key下也有2个子键
AuthorizedApplications:允许通过的应用程序
GloballyOpenPorts:打开的端口
用注册表的方式访问XP的防火墙设置基本上都能取得正确,但此方法在Vista下很大程度上不适用。
Vista在注册表的键值上改变很多,对注册表的改变,并不能使得防火墙的设置发生变化。
大家有兴趣的话可以自己试试,Vista下的注册表键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess
这目录下有default和Parameters两个子键目录,都存放着相应的设置。
2。通过dll方式访问:
.net开发需要用到hnetcfg.dll
c/c++开发还需要用到头文件
netfw.h
,XP和Vista都需要下载对应的SDK,才有该头文件
这里就介绍.net开发细节,将该dll加入工程后,在工程引用上会出现3个命名空间,分别是NATUPNPLib,NETCONLib,NetFwTypeLib
防火墙的设置都在NetFwTypeLib中,其余2个大家有兴趣可以自己研究研究。
用到的主要接口:
INetFwAuthorizedApplications:允许通过的所有应用程序
INetFwServices:允许通过的所有的服务及服务端口
INetFwPolicy:防火墙策略
INetFwProfile:防火墙设置
INetFwMgr:防火墙的管理类吧
NetFwTypeLib该命名空间下都是接口,只能通过反射方式获得类实例,入口为INetFwMgr。
参考代码:
1
Type typFwMgr
=
null
;
2
NetFwTypeLib.INetFwAuthorizedApplications iApps
=
null
;
3
NetFwTypeLib.INetFwServices iServices
=
null
;
4
NetFwTypeLib.INetFwMgr iFwMgr
=
null
;
5
NetFwTypeLib.INetFwPolicy iFwPolicy
=
null
;
6
NetFwTypeLib.INetFwProfile iFwProfile
=
null
;
7
typFwMgr
=
Type.GetTypeFromCLSID(
new
Guid(
"
{304CE942-6E39-40D8-943A-B913C40C9CD4}
"
));
8
9
iFwMgr
=
(NetFwTypeLib.INetFwMgr)Activator.CreateInstance(typFwMgr);
10
iFwPolicy
=
iFwMgr.LocalPolicy;
11
iFwProfile
=
iFwPolicy.CurrentProfile;
12
13
bool
isFireEnabled
=
iFwProfile.FirewallEnabled;
14
bool
isFireException
=
iFwProfile.ExceptionsNotAllowed;
15
16
iApps
=
iFwProfile.AuthorizedApplications;
17
iServices
=
iFwProfile.Services;
18
19
System.Console.WriteLine(
"
Firewall Enabled: {0}
"
, isFireEnabled);
20
System.Console.WriteLine(
"
Firewall ExceptionsNotAllowed: {0}\n
"
, isFireException);
21
22
foreach
(NetFwTypeLib.INetFwAuthorizedApplication iApp
in
iApps)
23
{
24
System.Console.WriteLine(
"
Application Name is:\n{0}\n
"
, iApp.Name);
25
System.Console.WriteLine(
"
Application ProcessImageFileName is: \n{0}\n
"
, iApp.ProcessImageFileName);
26
}
27
28
foreach
(NetFwTypeLib.INetFwService iService
in
iServices)
29
{
30
if
(iService.Enabled)
31
{
32
System.Console.WriteLine(
"
Service Name is:\n{0}
"
, iService.Name);
33
foreach
(NetFwTypeLib.INetFwOpenPort iPort
in
iService.GloballyOpenPorts)
34
{
35
System.Console.WriteLine(
"
{0} {1}
"
, iPort.Port, iPort.Name);
36
}
37
System.Console.WriteLine();
38
}
39
}
其中Type.GetTypeFromCLSID表示获取与指定类标示符关联的类型。
guid的取得,我是通过查注册表取得的,可以搜索命名空间。
这种方式不是特别好,如果有更好的方法,希望告知,谢谢。
这种方式访问防火墙,XP下完全没有问题,Vista下,除了用户自己添加的应用程序和服务端口无法获得外,其它都能获得,用户自己添加的应用程序和服务端口同样在注册表中没有找到,可能还是存放的位置问题。以后会对该文章进行补充说明。
参考文章:
.net:
http://blog.csdn.net/mittermeyer/archive/2006/05/19/745856.aspx
c/c++:
http://blog.csdn.net/Y___Y/archive/2007/03/22/1537493.aspx
2007/7/11补充:
用dll方式访问,在vista下开发的话,直接用windows\system32下的firewallapi.dll
将该dll加入后,在工程引用上只会出现1个命名空间,即NetFwTypeLib
搜索注册表的CLSID方法,搜索firewall即可。只要搜索到一个CLSID中有3个子键目录,其中最后一个为ProgID,里面有唯一的键值,即保存该类名称。
posted on 2007-07-10 17:12
AppleSeeker
阅读(2126)
评论(8)
编辑
收藏
所属分类:
.Net
FeedBack:
#1楼
2007-07-11 09:22 |
幸世建 [未注册用户]
我是划时代的人
回复
引用
#2楼
2007-07-11 09:23 |
幸世建 [未注册用户]
哦积极机
回复
引用
#3楼
2008-03-12 16:24 |
xuyan
你的NetFwTypeLib中有没有INetFwPolicy2接口呢,我看网上说要设置vista的防火墙需要这个接口 可NetFwTypeLib没有啊
回复
引用
查看
#4楼
[
楼主
]
2008-03-12 21:58 |
appleseeker
@xuyan
有的,你添加windows\system32\firewallapi.dll,有该接口的。vista下测试过的。你再看一下。
回复
引用
查看
#5楼
2008-03-12 22:20 |
xuyan
@appleseeker
你使用vista开发的吗?我用xp添加firewallapi.dll后只有INetFwPolicy接口 没有INetFwPolicy2
回复
引用
查看
#6楼
[
楼主
]
2008-03-12 23:41 |
appleseeker
@xuyan
xp下是没有的,虽然添加了该dll,但由于涉及到的防火墙不一致,所以可能会没有该接口。
在vista下肯定会有的。
另外你可以检查下该dll的版本。
回复
引用
查看
#7楼
2008-03-13 08:42 |
xuyan
@appleseeker
谢谢楼主我大概明白了,我在vista下试试吧
回复
引用
查看
#8楼
[
楼主
]
2008-03-13 09:04 |
appleseeker
@xuyan
我以前做过试验,把vista下的dll拿到xp下,尝试使用,但可惜不行,没有达到预期效果。防火墙和自动更新这些dll都依赖于别的dll,所以,即使使用高版本的,仍然不可能达到效果。
如果还有什么不明白的,可以告诉我。
回复
引用
查看
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-07-11 17:19 编辑过
所属分类的其他文章:
·
.Net Compact Framework 基础篇(7)
·
Windows Mobile访问SQL Server CE 3.5(2)
·
.Net Compact Framework 基础篇(6)-- Socket通信
·
.Net Compact Framework 基础篇(5)-- Exception
·
ADO.NET Sync Services For Device开发(1)
·
.Net Compact Framework 高级篇(2)-- 扩展SOAP应用
·
Windows自动更新的总结
·
Windows Mobile 6.1 -- 开发前先了解下有哪些变化
·
Visual Studio 2008 SP1 Bate版和.Net Framework 3.5 SP1 Beta版提供下载
·
移动开发索引贴
最新IT新闻:
·
第一财经周刊:当前互联网世界正处无秩序时代
·
Visual Studio 2008 SDK 1.1 发布
·
死敌VMware变身微软认证计划新成员
·
英特尔雅虎开发网络计算机频道
·
Windows Live视频邮件9月9日开始测试
博客园新闻频道
博客园首页
社区
MSN:appleseeker@hotmail.com
Mail:
appleseeker@gmail.com
精品女装淘宝店
<
2007年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(7)
给我留言
查看留言
我参加的小组
.NET 3.x
Windows Embedded
.NETCompactFramework
我参与的团队
.NET 控件与组件开发(1/1360)
上海.NET俱乐部(2/2199)
北京.NET俱乐部(2/1447)
Windows Mobile 应用开发(1/574)
ASP.NET AJAX (Atlas)学习(0/1340)
.NetFramework3.0 & 3.5(WCF,WPF,WF)团队(0/564)
Silverlight学习与研究(0/282)
Windows Vista开发(0/235)
我的标签
Windows Mobile
(24)
Sql Server CE
(2)
.net
(2)
VS2008
(1)
WUA
(1)
SOAP
(1)
Web Service
(1)
Sync Services
(1)
Podcast
(1)
Exception
(1)
更多
随笔分类
(71)
.Net(40)
Ajax
Mobile(30)
生活琐事(1)
随笔档案
(45)
2008年8月 (5)
2008年7月 (1)
2008年6月 (4)
2008年5月 (2)
2008年4月 (1)
2008年3月 (8)
2008年2月 (7)
2008年1月 (1)
2007年7月 (7)
2007年6月 (1)
2007年3月 (1)
2007年2月 (1)
2006年12月 (3)
2006年9月 (3)
Mobile Blog
fox23
MobileSide
葛涵涛/JerryGe
黎波
最新随笔
1. .Net Compact Framework 基础篇(7)
2. Windows Mobile访问SQL Server CE 3.5(2)
3. .Net Compact Framework 基础篇(6)-- Socket通信
4. .Net Compact Framework 基础篇(5)-- Exception
5. [Podcast推荐]--ASP.NET & .NET
6. ADO.NET Sync Services For Device开发(1)
7. .Net Compact Framework 高级篇(2)-- 扩展SOAP应用
8. Windows自动更新的总结
9. Windows Mobile 6.1 -- 开发前先了解下有哪些变化
10. Visual Studio 2008 SP1 Bate版和.Net Framework 3.5 SP1 Beta版提供下载
积分与排名
积分 - 98216
排名 - 386
最新评论
1. re: .Net Compact Framework 基础篇(7)
@bccs
不好意思,笔误笔误。
--AppleSeeker
2. re: .Net Compact Framework 基础篇(7)
Process是开启新进程吧.怎么能说成线程.
--bccs
3. re: Windows Mobile访问SQL Server CE 3.5(2)
@fox23
感谢替我回答拉,大帅哥,HOHO~~
--AppleSeeker
4. re: Windows Mobile访问SQL Server CE 3.5(2)
@sdf
可以
--fox23
5. re: Windows Mobile访问SQL Server CE 3.5(2)
这两天也在搞WINDOWS CE里保存数据的问题。 SQLCE能单独在 WINCE里保存数据吗? 我现在需要将数据在WINCE里单独保存起来。过一段时间再导入到sqlserver2005中。...
--sdf
阅读排行榜
1. Windows Mobile 5.0 (1)(10534)
2. Windows自动更新API (1)(5178)
3. Windows Mobile 5.0 (4) -- Mobile程序部署(3277)
4. Windows Mobile 5.0 (2)(2932)
5. Windows Mobile 6.0 (1)(2846)
评论排行榜
1. 实在令人愤恨--我在微软邮件中发现自己写的贴子被转抄。[事情已结束](71)
2. Windows Mobile 5.0 (1)(48)
3. Windows自动更新API (1)(23)
4. .Net Compact Framework 高级篇(1)(21)
5. .Net Compact Framework 基础篇(1)(20)
60天内阅读排行
1. Windows自动更新的总结(2111)
2. .Net Compact Framework 高级篇(2)-- 扩展SOAP应用(1441)
3. Windows Mobile访问SQL Server CE 3.5(2)(1378)
4. .Net Compact Framework 基础篇(6)-- Socket通信(1209)
5. .Net Compact Framework 基础篇(5)-- Exception(1153)