可执行文件是否可以请求管理员权限? (Windows 7的)

时间:2012-01-18 18:59:06

标签: c++ winapi windows-7

我正在开发一个分区磁盘程序,让我阅读\\\\.\\PhysicalDrive0我需要管理员权限。

我想知道在运行时是否有可能让程序获得管理员权限?那有没有赢得api?

我想这样做是因为我希望程序只在读取/写入磁盘时才能使用管理员权限执行。出于安全原因,我不希望程序一直以管理员权限执行,因为有人可能会在某个模块中发现错误(例如堆栈或堆溢出)并执行任意命令作为adm。

4 个答案:

答案 0 :(得分:13)

进程启动后,您无法获取提升的权限。您的选择是:

  1. 将需要提升权限的应用程序部分放入单独的进程中,并使用requireAdministrator清单显示。
  2. 运行需要提升权限的应用程序部分作为进程外COM对象。

答案 1 :(得分:5)

一旦进程开始执行,我从未见过转换权限的方法。我所知道的唯一方法是将进程创建为特权。

如果有其他方法,我期待其他答案。

(更新)
文章Teach Your Apps To Play Nicely With Windows Vista User Account Control(大约一半)确认只有在流程创建时才能授予管理员权限。

答案 2 :(得分:2)

您需要使用requireAdministrator标志嵌入清单

http://msdn.microsoft.com/en-us/library/bb756929.aspx

答案 3 :(得分:1)

Project的Propeties(Alt + Enter)->链接器->清单文件  -> UAC执行级别(在VS2015中,2010年类似)   -> requireAdministrator或highestAvailable

编辑:此外,如果它正在更新程序,只需将您的程序名称以Update开头,Windows将自动识别它。