我的组织生成一套利用网络的Windows应用程序,因此当用户第一次运行我们的软件时,Windows防火墙(如果它正在运行)会弹出一个弹出窗口,通知用户我们的应用程序正在尝试使用网络,提示用户允许或拒绝访问。
这种情况发生在很多其他应用程序(Spotify,举个例子),但是我们希望阻止这些弹出窗口的发生,因为它们对我们的用户来说可能有点问题。某些应用程序(MSN Messenger,GoogeTalk)运行时没有让防火墙提醒用户,我们也想这样做。
我们已经在Windows XP上成功完成了此操作,方法是让我们的安装程序在以下位置编写适当的注册表项:
HKLM \ SYSTEM \ ControlSet001 \服务\ SharedAccess \参数\ FirewallPolicy \ StandardProfile \ AuthorizedApplications \列表
但是,这对Windows 7没有同样的效果 - 防火墙弹出窗口仍然存在。
我们如何才能做到这一点? (我们的安装程序和软件都经过数字签名。)
由于 汤姆戴维斯
答案 0 :(得分:8)
您可以通过外壳到Windows内置的实用程序 netsh 来向Windows防火墙添加例外,但该实用程序在Windows XP和Windows 7上的工作方式不同。以下是我使用的命令:
添加:
netsh firewall add allowedprogram mode=ENABLE profile=ALL name=[exception name] program=[program path]
删除:
netsh firewall delete allowedprogram profile=ALL program=[program path]
添加:
netsh advfirewall firewall add rule action=allow profile=any protocol=any enable=yes direction=[in|out] name=[exception name] program=[program path]
删除:
advfirewall firewall delete rule profile=any name=[exception name]
答案 1 :(得分:6)
我实际上建议不要将此问题作为安装程序问题,原因如下:
有多个软件防火墙 在那里;你不能编码和测试 对于他们所有人。
一些(例如内置窗口 防火墙)有API不会 允许您配置端口 FW被禁用时的例外情况 如果用户以后启用FW你 又被冲洗了。
可能有外部防火墙 仍然能得到你。
相反,我更愿意将其作为文档工作,以便用户和管理员充分了解网络要求。我曾经不得不去苹果的网站找出iTunes所需的端口,我向上帝发誓,他们很难找到,因为他们试图为消费者软化一切。
但是,如果您想在安装过程中给予最大的信任,WiX有一个自定义操作扩展,用于与防火墙交互,而不是编写您自己的自定义操作。即使您使用其他工具(如InstallShield),也可以将此行为包装在WiX合并模块中,然后使用您选择的主要工具将其消耗。
您可以在这里阅读:
和
答案 2 :(得分:1)
在您的安装程序中(例如,作为提升的管理员),您需要编写代码来访问Windows Firewall APIs并将您的应用添加为例外