2010-08-04 38 views
4

如何在运行期间请求管理员权限,以便给用户提示以允许或禁止它?运行期间请求管理员权限

+0

是不是属于超级用户? – hsz 2010-08-04 12:10:17

+0

@hsz:不完全,因为OP正在使用代码在他的程序中执行此操作。 – BoltClock 2010-08-04 12:11:37

回答

0

此信息写入exe文件清单。您必须使用requestedExecutionLevel字段(但不确定 - 尝试将其设置为highestAvailable并查看它是否满足您的需求)。有关更多信息,请参阅此处以获取更多信息(较旧的文章但仍有效):http://blogs.msdn.com/b/cjacks/archive/2006/09/08/exploring-manifests-part-2-default-namespaces-and-uac-manifests-in-windows-vista.aspx

Visual Studio中有许多工具可让您嵌入自己的清单,甚至只需编辑它。还有一个用Perl编写的工具(http://metacpan.org/pod/Win32::Exe::Manifest)。

编辑:看到这篇文章的详细信息:http://www.codeproject.com/Articles/66259/Requesting-Admin-Approval-at-Application-Start.aspx如果你想让它在响应按钮

+0

我并不总是需要提高privs;我想在用户点击一个按钮时请求它。 – tenfour 2010-08-04 12:13:15

+0

哦,我明白了,那么我的编辑可能是相关的。留下答案,因为有人可能会觉得它有用。 – PeterK 2010-08-04 12:17:18

1

(例如,像在任务管理器“显示过程为所有用户”),你必须使用到resart您的应用程序以下方法

ShellExecute(0,L"runas",exepath,0,0,SW_SHOWNORMAL); 
+0

我不认为有可能在运行时改变执行级别;我的解决方案确实是使用仰角重新启动应用程序。谢谢。 – tenfour 2010-08-25 12:36:37