对于一些底层操作或者注册表操作,如果没有UAC权限就没办法正确执行。获得UAC权限的方式是将manifest.xml包到工程中,文件如下:
<?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="IsUserAdmin"
type="win32"/>
<deforbiddenion>Deforbiddenion of your application</deforbiddenion>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
重點1 : 將 xml 中的 requestedPrivileges.requestedExecutionLevel.Level 提升至 requireAdministrator (如上黃底字)
重點2 : 將此份 xml 包入您專案檔的 res 內
經上步驟處理, 您會發現您的程式在 Win7, 應用程式圖示在右小角多了一個黃色小盾牌,使用者執行時 Win7 UAC 會詢問是否以管理者權限執行
需要注意的是:
假如您在 Windows 7 的電腦上編譯,一定 *不能* 關閉 UAC,否則編譯出來的執行檔圖示不會有小盾牌也就是這一段 manifest 無法生效