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

时间:2011-10-05 19:13:03

标签: c# windows windows-7 windows-vista

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

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

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

4 个答案:

答案 0 :(得分:122)

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

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

您还可以使用highestAvailable作为关卡。

请看这里有关嵌入清单文件的信息:

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

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

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

添加的文件已经包含上述部分,只需将级别从requireAdministrator更改为asInvoker

答案 1 :(得分: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>

答案 2 :(得分:1)

答案 3 :(得分:0)

对于F#Visual Studio 2013,包括使用FSharp编译器/win32manifest标志请求管理员提升的清单文件,如下所示。因此,给定一个名为&#34; App.Exe&#34;

的项目输出
  1. 使用以下内容创建文件(为方便起见,您可以添加 该文件到项目。确保它 Build Action None' and已复制到输出... is请勿复制. By convention such a file is named App.Exe.manifest`。如果您需要uiAccess(用户界面), 必须强烈命名装配。

    <?xml version="1.0" encoding="utf-8" ?>
    <asmv1:assembly manifestVersion="1.0" 
        xmlns="urn:schemas-microsoft-com:asm.v1"
        xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
        xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <assemblyIdentity version="1.0.0.0" name="App" />
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </asmv1:assembly>
    
  2. 修改项目对话框构建面板的Other flags:条目字段,以包含以下内容:/win32manifest:<ApplicationManifestFile>。例如,在这种情况下,/win32manifest:App.Exe.manifest