首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET -当UAC启用时,应用程序如何能够更新自己(Windows7 7/Vista)?

.NET -当UAC启用时,应用程序如何能够更新自己(Windows7 7/Vista)?
EN

Stack Overflow用户
提问于 2011-07-12 20:11:59
回答 3查看 2.9K关注 0票数 3

下面是一个场景:

我编写了一个应用程序,并从项目创建了一个安装程序(我生成了一个MSI文件)。我以管理员身份将应用程序安装到Program目录中。

当用户使用应用程序时,我希望它能够自动更新自己(而不打扰管理员)。现在,Windows 7和Windows有UAC来保护Program目录。所以,我不太确定从这里往哪里走。

我想我在某个地方读到,ClickOnce能够安装应用程序的更新,而不会打扰用户获得管理权限。

有什么应用程序可以帮助auto-update?

  • If --有这样的应用程序--它们如何能够绕过提升的权限?基本上,难道不可能在某种程度上复制这些应用程序在.NET (C#)中所做的事情吗?

我真的只是希望找到一种简单的方法来使用MSI文件进行无声的更新,因为我不希望普通用户拥有管理权限,也不希望管理员对此任务感到困扰。而且,显然不能硬编码,因为用户名和密码可能很容易更改。

EN

回答 3

Stack Overflow用户

发布于 2011-07-12 20:16:51

您可以做的一件事肯定是创建一个作为本地系统运行的更新服务。这个肯定会绕过UAC。

另一种选择(因为安装服务可能会被认为过于具有侵入性)是调度一个任务,再次通过W7任务调度器作为本地系统运行。

在任何一种情况下,这必须在安装期间完成,否则UAC将再次被触发。

编辑:我刚刚想到了另一种处理它的方法:你可以使用Chrome风格。不要将任何东西安装到程序文件中,将所有应用程序二进制文件和数据保存在用户文件夹中。通过这种方式,您可以随意升级,只需用户级权限,而不触发UAC。

票数 6
EN

Stack Overflow用户

发布于 2011-07-12 20:18:19

如果安装程序和更新包使用相同的数字证书签名,则可以使用MSI更新应用程序,而无需管理员权限。

这就是所谓的UAC修补。This是MSDN上的相关页面。

票数 6
EN

Stack Overflow用户

发布于 2011-07-12 20:19:08

ClickOnce不会将您的应用程序安装到程序文件中(如果有人以后需要尝试查找文件夹,这是非常烦人的),这就是它如何避免的。没有任何方法可以“绕过”UAC,我建议您这样做:将安装文件夹的所有权交给本地用户,使用icacls和外接,这就是蒸汽公司允许自己将游戏安装到它的文件夹中的方法。

编辑:,您也可以使用SetSecurityInfo在代码中将所有权交给本地用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6670473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档