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

Ars*_*ray 72 c# windows windows-vista windows-7

我需要我的软件能够在Windows Vista上以管理员身份运行(如果有人在没有管理权限的情况下运行它,它将崩溃).

在启动其他软件时,我看到系统提示"此软件将以管理员身份运行.您要继续吗?" 当应用程序尝试获取管理权限时.

在Windows Vista上运行c#app时如何请求管理权限?

man*_*lds 125

将以下内容添加到清单文件中:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)

您也可以使用highestAvailable该级别.

请看这里嵌入清单文件:

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

PS:如果您没有清单文件,可以轻松添加新文件:

在Visual Studio中,右键单击项目 - >添加项目 - >选择应用程序清单文件(在Visual C#项目的常规下)

添加的文件已经具有上述部分,只需将级别更改requireAdministratorasInvoker

  • @Momoro 关于 SO 的问题不仅是为了 OP,也是为了社区的更大利益。其他人在寻找其他解决方案时可能会发现这个问题,而不仅仅是 OP 询问的内容。一般来说,告诉人们“你可以用应用程序清单做这些事情”并没有什么坏处。 (4认同)
  • 值得一提的是,如果您以这种方式在 VS 中添加应用程序清单文件,您会在那里获得一个包含许多其他选项的模板(例如,说您的应用程序仅适用于 Windows 10 及更高版本。)在 VS2017 上测试。 (3认同)
  • 帮助我了解有关添加清单文件的信息!谢谢 (2认同)

Ste*_*ner 12

将此XML放在名为yourexename.exe.manifest的文件中:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
   <security>
     <requestedPrivileges>
        <requestedExecutionLevel level="highestAvailable" />
     </requestedPrivileges>
   </security>
</trustInfo>
</assembly>
Run Code Online (Sandbox Code Playgroud)