公司產品發先個問題,在Vista guest用戶居然注冊Flash.ocx會失敗,而且不提示任何錯誤,但是在Windows會成功,就直接弄了個exe,安裝的時候居然彈出UAC,要輸入密碼才能繼續往下運行,而公司的產品注冊是卻不會彈出,後來才知道guest用戶不夠權限,要彈出UAC輸入密碼提高權限.
在網上找了很久,很多都是講Delphi,看想去挺麻煩的,也看到些vc的,發現有兩種簡單的方法可以做到讓exe彈出UAC:
1.直接更改exe名,Vista下系統遇到這些update install..敏感,會馬上彈出UAC;
2.就是在資源裡面添加些東東了。
<?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>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
該代碼添加到VC資源中即可, 添加方式:
添加一個“custom”資源,”resource type”填24,考試,大提示把資源ID改為1。
如果只有一個可執行文件,也可以通過以下方法添加:
mt.exe -manifest e4nmgr.exe.manifest -outputresource:e4nmgr.exe;1
這樣,就可以在C++編譯出來的程序裡面實現申請管理員權限那個功能了。