在exe的工程中找manifest 中的最後一行之前加下面的代碼:進行編譯就可以了,
<ms_asmv3:trustInfo xmlns:ms_asmv3= "urn:schemas-microsoft-com:asm.v3 ">
<ms_asmv3:security xmlns:ms_asmv3= "urn:schemas-microsoft-com:asm.v3 ">
<requestedPrivileges>
<requestedExecutionLevel level= "requireAdministrator " uiAccess= "false "> </requestedExecutionLevel>
</requestedPrivileges>
</ms_asmv3:security>
</ms_asmv3:trustInfo>
不過這樣的exe隻能運作管理者權限下,如果以一般使用者登入,需要輸入管理者的帳号及密碼才行。一般都是不設requireAdministrator,而是設其為asInvoker。
不過在有些沒打更新檔的XP sp2的系統上,用manifest提升權限可能導緻系統重新開機,謹慎使用!
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="test.exe.manifest"
type="win32"
/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</security>
</trustInfo>
</assembly>
該代碼添加到VC資源中即可, 添加方式:
添加一個“custom”資源,"resource type"填24,把資源ID改為1
如果隻有一個可執行檔案,也可以通過以下方法添加:
mt.exe -manifest e4nmgr.exe.manifest -outputresource:e4nmgr.exe;1
比如我把 D:\BitSpirit\BitSpirit.exe 改為管理者權限
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
新增一個字元串鍵值:
名稱設定為“D:\BitSpirit\BitSpirit.exe”
數值資料設定為“RUNASADMIN”