我有一个用 .NET 4.0 VS2010 编写的 WPF 应用程序,我希望通过 clickonce 在我们的 Intranet 内部进行部署。
问题是我试图在 HKEY_LOCAL_MACHINE 中创建一个注册表项,但访问被拒绝。
我将应用程序设置为完全信任,甚至尝试断言 RegistryPermission 无济于事。
真的不可能通过clickonce分发应用程序并让它访问HKEY_LOCAL_MACHINE吗?
不是 ClickOnce。
请参阅此处进行讨论。相关部分:
由于存在将应用程序暴露于安全提升攻击的风险,如果为客户端启用了 UAC,则 ClickOnce 应用程序无法请求权限提升。任何试图将其 requestedExecutionLevel 属性设置为 requireAdministrator 或highestAvailable 的ClickOnce 应用程序都不会安装在Windows Vista 上。
最后一条语句也适用于 Windows 7,因为安全模型是相同的。
最重要的是,您尝试做的事情需要提升到“以管理员身份运行”,所以不,您不能对打开了 UAC 的客户端执行您尝试做的事情。
此外,如果应用程序在安装时需要对本地计算机的特权访问,那么它绝对不适合 ClickOnce 部署,因为根据设计,ClickOnce 中没有机制来添加注册表项,在全局程序集缓存 (GAC) 中安装共享程序集)、安装服务等。