ClickOnce应用程序和Windows防火墙

时间:2010-09-29 00:42:36

标签: clickonce firewall windows-firewall

在我看来,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,微软承认了这个问题并承认没有解决方案。

这个问题已经解决了吗?

1 个答案:

答案 0 :(得分:3)

  

问题是,Windows防火墙将应用程序记录存储为   完整的文件路径。每次更新ClickOnce应用程序时,都会   安装到不同的目录。因此,Windows防火墙会看到它   作为一个全新的应用程序。

此处的一种方法是编辑规则名称,使其仅指定EXE的名称而不指定完整路径。例如。我在本地部署的“Hello World”应用程序由ClickOnce安装在此路径上:

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

请注意,我还使用了一个环境变量,显然是为了测试防火墙规则而扩展的。