自从Vista推出UAC之后,遇到程序需要执行一些高安全级别的操作的时候就需要系统管理员权限,如何让自己写的程序能够自动向系统申请管理员执行权限,也就是在程序的图标上出现一个小盾牌的图标呢,使用Visual Studio 可以很方便的做到这一点。具体步骤如下:
1、在项目中增加一个Application Manifest File
2、打开新增加的app.manifest文件,文件的内容如下:
app.mainfest<?xmlversion="1.0"encoding="utf-8"?>
<asmv1:assemblymanifestVersion="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="/2001/XMLSchema-instance">
<assemblyIdentityversion="1.0.0.0"name="MyApplication.app"/>
<trustInfoxmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivilegesxmlns="urn:schemas-microsoft-com:asm.v3">
<!--UACManifestOptions
IfyouwanttochangetheWindowsUserAccountControllevelreplacethe
requestedExecutionLevelnodewithoneofthefollowing.
<requestedExecutionLevellevel="asInvoker"uiAccess="false"/>
<requestedExecutionLevellevel="requireAdministrator"uiAccess="false"/>
<requestedExecutionLevellevel="highestAvailable"uiAccess="false"/>
SpecifyingrequestedExecutionLevelnodewilldisablefileandregistryvirtualization.
IfyouwanttoutilizeFileandRegistryVirtualizationforbackward
compatibilitythendeletetherequestedExecutionLevelnode.
-->
<requestedExecutionLevellevel="requireAdministrator"uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibilityxmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--AlistofallWindowsversionsthatthisapplicationisdesignedtoworkwith.Windowswillautomaticallyselectthemostcompatibleenvironment.-->
<!--IfyourapplicationisdesignedtoworkwithWindows7,uncommentthefollowingsupportedOSnode-->
<!--<supportedOSId="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
</application>
</compatibility>
<!--EnablethemesforWindowscommoncontrolsanddialogs(WindowsXPandlater)-->
<!--<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="mon-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>-->
</asmv1:assembly>
3、把<requestedPrivileges〉节中的配置项<requestedExecutionLevel level=" asInvoker" uiAccess="false" />改为<requestedExecutionLevel level=" requireAdministrator " uiAccess="false" />
4、重新编译程序,编译好后的程序图标上就会出现一个小盾牌,就可以以管理员身份启动了。