c#从UAC管理员级别进程降低权限启动进程

我的应用程序有一个主要问题。 我有一个应用程序和更新程序作为单独的exe文件。 当更新可用时,更新程序会执行更新,并在进程完成时启动我的应用程序。 主要问题是 – 应用程序安装在程序文件文件夹中,因此更新程序需要UAC管理员权限,这没关系,但是当我需要运行我的应用程序时,更新程序需要以普通用户身份运行它,因为如果它以管理员身份运行和drop不起作用(不是应用程序问题,UAC阻止它)。 我已经尝试了几种不同的解决方案,甚至这一个: 如何在Vista(.NET)中运行NOT raise

它没有帮助我 – 我的应用程序是以管理员身份运行的。

你最好避免从boost的过程开始一个非升级的过程。 这是棘手的部分,容易出错。

这种方法更好:

  1. 您的更新程序最初以非提升的应用程序启动,其清单具有asInvoker级别。
  2. 启动时,它使用runas谓词以提升的权限重新启动自身,并传递命令行参数以指示它。 此实例执行更新并返回。
  3. 这里再次出现非提升的更新程序,并使用在步骤1中启动第一个更新程序实例的相同非提升用户令牌启动应用程序。

非常简单和强大。

请看这篇关于如何为高架过程启用拖放的post。 即使它说MFC应用程序你可以在任何应用程序中cll那些Windows API我想

https://helgeklein.com/blog/2010/03/how-to-enable-drag-and-drop-for-an-elevated-mfc-application-on-vistawindows-7/