程序启动时如何请求管理员权限
本文关键字:请求 管理员 权限 启动 何请求 程序 | 更新日期: 2023-09-27 18:10:36
我需要我的软件能够以管理员身份在Windows Vista上运行(如果有人在没有管理权限的情况下运行它,它会崩溃)。
当启动其他软件时,我看到系统提示"此软件将以管理员身份运行"。
当应用程序试图获取管理权限时。在Windows Vista上运行c#应用程序时,我如何请求管理权限?
将以下内容添加到您的manifest文件中:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
您也可以使用highestAvailable
作为级别。
看这里嵌入清单文件:
http://msdn.microsoft.com/en-us/library/bb756929.aspxPS:如果你没有一个清单文件,你可以很容易地添加一个新的:
在Visual Studio中,右键单击project -> Add Item -> Choose
应用程序清单文件(在通用下用于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
:
创建一个具有以下内容的文件(为了方便,您可以通过确保它的
Build Action
是None
,Copy to Output...
是Do not copy
将该文件添加到Visual Studio项目中作为开发资源)。按照惯例,清单文件以它们的输出目标命名,在本例中是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>