1. 程式人生 > >C++中應用程式獲得管理員許可權執行(圖示帶盾牌)

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的清單檔案,在專案(屬性--聯結器--清單檔案)新增清單檔案

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

  3. <assemblyIdentityversion="1.0.0.0" processorArchitecture="X86" name="VistaLogoDemo" type="win32"/>

  4. <description>Description of your application</description>

  5. <!-- Identify the application security requirements.-->

  6. <trustInfoxmlns="urn:schemas-microsoft-com:asm.v3">

  7. <security>

  8. <requestedPrivileges>

  9. <requestedExecutionLevellevel="requireAdministrator" uiAccess="false"/>

  10. </requestedPrivileges>

  11. </security>

  12. </trustInfo>

  13. </assembly>