[英]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>
您需要在清单中使用requestedExecutionLevel
令牌:
对于.Net
( Visual Studio 2013
),包括请求管理员提升的清单文件,并使用编译器的/win32manifest
标志,编写并提供请求此提升的清单文件。 但是,以下描述了在 Visual Studio 中为项目名称App.Exe
:
创建一个包含以下内容的文件(为方便起见,您可以将文件作为开发资源添加到 Visual Studio 项目中,方法是确保它的Build Action
为None
并且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>
编辑项目对话框的构建面板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.