ClickOnce 应用程序和 Windows 防火墙
Posted
技术标签:
【中文标题】ClickOnce 应用程序和 Windows 防火墙【英文标题】:ClickOnce applications and Windows Firewall 【发布时间】:2011-04-18 14:19:41 【问题描述】:在我看来,ClickOnce 应用程序无法与 Windows Firewall 顺利运行。
我已经成功使用 ClickOnce 部署两年了。现在企业已经升级到 Windows 7,这遇到了一个绊脚石。每个用户的配置都发生了变化:
Windows 防火墙已在每个用户的计算机上启用 用户在他们的机器上没有管理员权限。ClickOnce 的工作原理如下:每次更新 ClickOnce 应用程序时,可执行文件都会复制到新目录。该目录有一个机器生成的名称。 (例如,它可能会部署到“C:\Users\andrew.shepherd\AppData\Local\Apps\2.0\GTTG5EJB.AVG\jc69hir.e45\watershedclient.exe”)。
默认情况下,Windows 防火墙会阻止应用程序接受来电。但是,当应用程序第一次尝试这样做时,Windows 防火墙会弹出一个对话框,允许管理员 为应用程序设置例外情况,为其提供所需的权限。
问题是,Windows 防火墙将应用程序记录存储为完整文件路径。每次更新 ClickOnce 应用程序时,它都会安装到不同的目录。因此,Windows 防火墙将其视为一个全新的应用程序。管理员现在必须为其更新的每台计算机配置此更新的防火墙。这有效地否定了我们使用 ClickOnce 技术的全部原因。
这是 2005 年的 flagged as an issue,微软承认了这个问题并承认没有解决方案。
这个问题解决了吗?
【问题讨论】:
我目前正在审查 ClickOnce 功能,这似乎是一个不利于我推荐它的主要问题,因为我们的应用程序使用端口 80 上的 SOAP/XML 服务调用与 HTTP 服务器通信。 另见Clickonce applications being allowed through firewall和ClickOnce Installation / Firewall Settings @locster 我不确定循环链接同一主题上未回答的问题如何帮助用户找到该问题的答案。 @redcalx: 顺便说一句,硬连线端口 80 是一个非常糟糕的主意...... 【参考方案1】:问题是,Windows 防火墙将应用程序记录存储为 完整的文件路径。每次更新 ClickOnce 应用程序时,它 安装到不同的目录。因此,Windows 防火墙看到它 作为一个全新的应用程序。
这里的一种方法是编辑规则名称,使其仅指定 EXE 的名称而不是完整路径。例如。 ClickOnce 将我本地部署的“Hello World”应用程序安装在此路径:
C:\Users\jdoe\AppData\Local\Apps\2.0\BNYJV8NM.JT8\DGEMYJV2.ZN7\hell..tion_32be098505965508_0001.0000_ad51d60d7593998b\HelloWorld.exe
并且可以使用仅适用于“HelloWorld.exe”的防火墙规则。但是,这会产生一个安全漏洞,因为该规则适用于具有该名称的任何应用程序。我们可以通过指定一些路径来进一步细化规则:
%LOCALAPPDATA%\Apps\2.0\BNYJV8NM.JT8\DGEMYJV2.ZN7\*\HelloWorld.exe
请注意,我还使用了一个环境变量,显然是为了测试防火墙规则而对其进行了扩展。
【讨论】:
好主意,您可以更进一步,通过在应用程序启动时以编程方式检查/添加规则来自动执行此操作,方法如下:codeproject.com/Articles/14906/… 我对没有任何路径的 .exe 和正确路径低于 %LOCALAPPDATA% 的 .exe 都进行了尝试。两者都不起作用(Windows 8.1)。 @HennoVermeulen 如果您完全禁用防火墙,它会起作用吗?也就是说,问题肯定是防火墙吗? @redcalx 不幸的是,由于组策略,这是不可能的,但我几乎可以肯定它可以。我已将此规则放入组策略中,并且我可以看到正确的规则在防火墙中。 Windows 仍然会在我的应用程序上弹出防火墙警告。我需要管理员权限才能接受这一点,然后应用程序才能运行。如果我按取消,应用程序将被阻止。不幸的是,这是普通用户唯一可以做的事情。 Microsoft: "我们目前仅支持使用应用程序的完整路径创建的规则。" (在本节末尾的注释中)以上是关于ClickOnce 应用程序和 Windows 防火墙的主要内容,如果未能解决你的问题,请参考以下文章
一种ClickOnce应用程序在Windows7上安装时发生错误的解决办法