如何以管理员权限启动应用程序

Posted

技术标签:

【中文标题】如何以管理员权限启动应用程序【英文标题】:How to launch an application with admin rights 【发布时间】:2010-01-22 01:19:57 【问题描述】:

我想启动一个具有管理员权限的应用程序。如果它以受限用户运行,则会出现一个弹出窗口(与“运行方式”上下文菜单相同),以便用户输入管理员帐户(用户和密码),并将我的应用程序权限切换给该用户。因为我的应用程序需要权限才能运行。

我想在 XP 和 Vista 中实现这个功能。

谢谢。

【问题讨论】:

【参考方案1】:

这可以通过 Impersonator 类解决:

http://www.codeproject.com/KB/cs/zetaimpersonator.aspx

或者这个 ImpersonateUser 函数:

http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

其他一些选项是执行RunAs /user:administrator "program"

或将其添加到您原始应用的 .manifest 文件中(因此在开始时请求一次权限)

<requestedPrivileges>
  <requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>

【讨论】:

实际上是 Windows XP 添加了对应用程序清单的支持。虽然仅 Windows Vista 及更高版本支持 requestedPrivelages 节点,但确实如此。

以上是关于如何以管理员权限启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何以管理员权限启动 Windows 服务

如何在没有我的 WPF 主机也以管理员权限运行的情况下以管理员权限启动进程以实现文件拖放?

程序启动时如何请求管理员权限?

如何从具有管理员权限的进程中启动没有管理员权限的新进程?

如何以管理员权限启动进程

如何以管理员权限从 Windows 服务运行程序