在我看来,ClickOnce应用程序无法与Windows Firewall平稳运行。
我已成功使用ClickOnce部署两年了。现在,企业已升级到Windows 7,这已成为绊脚石。每个用户的配置都已更改:
以下是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,微软承认了这个问题并承认没有解决方案。
这个问题已经解决了吗?
答案 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
请注意,我还使用了一个环境变量,显然是为了测试防火墙规则而扩展的。