繁体   English   中英

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

[英]How to request administrator permissions when the program starts?

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

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

在 Windows Vista 上运行 c# 应用程序时如何请求管理权限?

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

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

您也可以使用highestAvailable可用的级别。

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

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

PS:如果你没有manifest文件,你可以很容易地添加一个新的:

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

添加的文件已经有了上面的部分,只需将级别从asInvoker更改为requireAdministrator

将此 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>

对于.Net ( Visual Studio 2013 ),包括请求管理员提升的清单文件,并使用编译器的/win32manifest标志,编写并提供请求此提升的清单文件。 但是,以下描述了在 Visual Studio 中为项目名称App.Exe

  1. 创建一个包含以下内容的文件(为方便起见,您可以将文件作为开发资源添加到 Visual Studio 项目中,方法是确保它的Build ActionNone并且Copy to Output...Do not copy 。按照惯例,清单文件被命名为在它们的输出目标之后,在本例中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标志并让 Visual Studio 相应地调用编译器。 例如,在这种情况下,

    /win32manifest:App.Exe.manifest

请注意以下条目:

  <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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM