Windows 7、Vista、Server 2008、UAC已激活
程序必须具有管理员权限才能进行某些安装操作。之后,我希望我的程序继续以非管理员权限运行。
如何在没有管理权限的情况下重新启动它?
P.S.
我的程序自行重新安装。我不想为其分发任何附加程序。所以我的步骤是:
- 在临时目录中下载新版本
- 在管理员权限下自行重启
- 重命名旧的 exe 文件并从临时目录复制新的 exe 文件
- 在非管理员权限下自行重启
在 UAC 下,现在强烈建议不要在“首次运行”时执行任何操作。此外,使用自行开发技术进行自我更新的程序会发现更加困难。您说您不想分发额外的程序,但在 UAC 下您实际上别无选择。要么你的整个应用程序每次都以提升的方式运行(惹恼用户),以防它碰巧需要执行一些管理操作,要么将其分成两部分,并偶尔运行一个提升的部分,而另一部分始终不提升。
拆分它的一种方法是编写一个安装程序,它可以提升,而常规应用程序则不能。这适用于安装一次、在第一次运行时执行一些操作(将这些操作移至安装程序)然后完成的人。你说你的应用程序会自行更新。因此,您需要将该代码移动到一个单独的 exe 中,并在该 exe 上放置一个包含 requireAdministrator 的清单。然后,当有新的更新可用时,您的主应用程序将启动(使用 ShellExecute)更新 exe。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)