c#从UAC管理员级别进程降低权限启动进程
我的应用程序有一个主要问题。 我有一个应用程序和更新程序作为单独的exe文件。 当更新可用时,更新程序会执行更新,并在进程完成时启动我的应用程序。 主要问题是 – 应用程序安装在程序文件文件夹中,因此更新程序需要UAC管理员权限,这没关系,但是当我需要运行我的应用程序时,更新程序需要以普通用户身份运行它,因为如果它以管理员身份运行和drop不起作用(不是应用程序问题,UAC阻止它)。 我已经尝试了几种不同的解决方案,甚至这一个: 如何在Vista(.NET)中运行NOT raise
它没有帮助我 – 我的应用程序是以管理员身份运行的。
你最好避免从boost的过程开始一个非升级的过程。 这是棘手的部分,容易出错。
这种方法更好:
- 您的更新程序最初以非提升的应用程序启动,其清单具有
asInvoker
级别。 - 启动时,它使用
runas
谓词以提升的权限重新启动自身,并传递命令行参数以指示它。 此实例执行更新并返回。 - 这里再次出现非提升的更新程序,并使用在步骤1中启动第一个更新程序实例的相同非提升用户令牌启动应用程序。
非常简单和强大。
请看这篇关于如何为高架过程启用拖放的post。 即使它说MFC应用程序你可以在任何应用程序中cll那些Windows API我想