将正在运行的程序提升为管理员(Windows 7)


35

有时您可能会打开一个想要以管理员身份运行的程序,但是您可能已经以管理员身份打开了该程序。是否可以提升Windows 7中已经在运行的程序的特权,还是必须以管理员身份关闭并重新启动?


8
须藤为胜利!
乔什(Josh K)2010年

1
@Josh Ker-如何使用来提升已经运行的应用程序sudo
Sathyajith Bhat

这很神奇,您必须解码man sudo以获取更多信息。
乔什(Josh K)2010年

2
@Josh,如果没有其他问题,您可以随时使用pseudo;)
Tomas Aschan

Answers:


26

很不幸的是,不行。无法将正在运行的进程提升为管理员权限。我正在寻找更权威的资料来源,但现在我发现:

  1. “程序一旦启动就无法提升...”

  2. “代码只能在启动时在进程级别提升,这意味着无法提升正在运行的进程。”


1
这是绝对不正确的。尽管有问题的应用程序必须公开功能本身,但win32 API确实支持提升已经运行的任意应用程序。本文和随附的源代码演示了如何实现此目的。可以想象,可以编写一个应用程序来选择和提升其他过程……
Fopedush 2013年

8
@Fopedush尽管该文章将这种技术描述为“自我提升”,但是这些示例程序似乎实际上正在做的是使用ShellExecuteEx动词“ runas” 启动该过程的新实例。我认为这并不能满足OP提升已经运行的程序的需求(例如,它将失去其所有状态)。
斯蒂芬·詹宁斯

当非提升的Total Commander 8.01实例在诸如复制到程序文件子文件夹的操作中被阻止时,它提供了“以管理员身份重试”的可能性。这不能扩展到“外来”(非自身)过程吗?
n611x007 2013年

3
@naxa我没有使用过Total Commander,但我愿意打赌“以管理员身份重试”选项实际上产生了一个完全独立的提升进程,该进程执行特权工作。当您选择“显示所有进程的详细信息”时,Process Explorer会执行此操作,它将启动自身的新的提升副本并关闭未提升的副本。如果是这种情况,则需要专门编写程序以了解如何正确启动第二个进程。
Stephen Jennings

1
@StephenJennings您完全正确-我链接的代码示例实际上只是使用runas命令重新启动。在发表评论之前,除了文章之外,我还应该对代码进行审查。我一直以为WIN32 API确实暴露了某种提升机制的印象-但也许我记错了。如果可以找到我的想法,我会四处挖掘并再次发布。
Fopedush 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.