C++中應用程式獲得管理員許可權執行(圖示帶盾牌)
在vista以後的windows版本中,有些時候需要提升編譯後生成程式的許可權,即希望讓生成的程式以管理員身份執行。雖然在一般情況下,可以使用滑鼠右鍵選擇的方式來強行以管理員身份執行,但它並沒有遮蔽普通執行方式,而且普通人通常也不會使用右鍵選擇以管理員身份執行,所以必須在生成程式時就限定程式只能以管理員方式來執行。
先簡單說一下,在vista以後的windows版本中,微軟引入了UAC機制,它的目的是防止程式對作業系統本身進行惡意篡改。要讓程式以管理員身份執行,就需要在程式中引入UAC標註,也即讓程式顯示“UAC盾牌”。
以下是以visual studio為例
方法一:
用vs設定一下就好,vs自動完成方法二的事情
1 找到VS2010的快捷方式:右擊——“開啟檔案位置”,找到VS2010的啟動專案devenv.exe:右擊——屬性——相容性——特權等級,以管理員許可權執行;如果需要每個使用者都以管理員許可權執行,還可以“更改所有使用者的設定”——特權等級,以管理員許可權執行。然後在專案的開啟方式中確保以VS2010為預設開啟程式就好了。
2 屬性--聯結器--清單檔案-》UAC執行級別-》requireAdministrator (/level='requireAdministrator')
方法二:
清單檔案:建立如app.mainfest的清單檔案,在專案(屬性--聯結器--清單檔案)新增清單檔案
-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-
<assemblyIdentityversion="1.0.0.0" processorArchitecture="X86" name="VistaLogoDemo" type="win32"/>
-
<description>Description of your application</description>
-
<!-- Identify the application security requirements.-->
-
<trustInfoxmlns="urn:schemas-microsoft-com:asm.v3">
-
<security>
-
<requestedPrivileges>
-
<requestedExecutionLevellevel="requireAdministrator" uiAccess="false"/>
-
</requestedPrivileges>
-
</security>
-
</trustInfo>
-
</assembly>