运行时请求管理员权限

4

我该如何在运行时请求管理员权限,以便用户被提示允许或拒绝?


这不应该属于超级用户吗? - hsz
@hsz:不完全正确,因为OP希望在他的程序中使用代码来实现这一点。 - BoltClock
2个回答

1
如果你想在响应按钮时(例如,像任务管理器中的“显示所有用户的进程”),你必须使用以下方法重新启动你的应用程序。
ShellExecute(0,L"runas",exepath,0,0,SW_SHOWNORMAL);

我认为在运行时改变执行级别是不可能的;我的解决方案确实是以提升权限重新启动应用程序。谢谢。 - tenfour

0
这些信息写在exe文件清单中。你必须使用requestedExecutionLevel字段(但不确定 - 尝试将其设置为highestAvailable,看看是否符合你的需求)。例如,可以在这里找到更多信息(虽然是较旧的文章,但仍然有效):链接
Visual Studio中有一些工具可以让你嵌入自己的清单,甚至只需编辑它。还有一个用Perl编写的工具(http://metacpan.org/pod/Win32::Exe::Manifest)。
编辑:查看这篇文章以获取更多信息:http://www.codeproject.com/Articles/66259/Requesting-Admin-Approval-at-Application-Start.aspx

我并不总是需要高级权限;当用户点击按钮时,我希望请求它。 - tenfour
哦,我明白了,那么我的编辑可能是无关的。我把答案留在这里,因为有人可能会觉得它有用。 - PeterK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接