1. 程式人生 > >vs2005 生成的應用程式 在win7下以管理員許可權執行

vs2005 生成的應用程式 在win7下以管理員許可權執行

在開啟UAC的時候,在win7中執行程式預設是以一種許可權較低的方式執行的,但是在這種方式下,我們有些操作會失敗(比如修改登錄檔,監聽埠,往系統目錄寫入檔案等),要實現這些操作,就需要我們以管理員許可權執行程式了。

當然,只有在程式上右鍵,選擇“以管理員執行”就可以,不過如何讓程式自己自動以管理員許可權來執行呢,這就需要Manifest了。

兩種方法

在已經生成的exe中插入manifest(應用程式清單檔案 )

建立文字檔案, 命名為”可執行檔名.exe.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="VistaLogoDemo" type="win32"/><description>Description of your application</description><!-- Identify the application security requirements.
--><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevellevel="requireAdministrator" uiAccess="false"/></requestedPrivileges></security></trustInfo></assembly>

執行級別有3種,這裡使用 requireAdministrator 表示以管理員許可權執行,如果寫為 aslnvoker,那麼就是以普通許可權執行。

將該檔案存放執行檔案目錄下

開啟vs2005 只加載生成的exe執行檔案

新增資源匯入manifest檔案命名為RT_MANIFEST,將其ID改為1

儲存exe。

這樣在V或7下就會有盾牌標誌,程式啟動會提示UAC而管理員許可權啟動

二  在工程中加入

專案-->屬性-->連結器-->清單檔案 生成清單檔案 是

VS2008 VS2010 在選項中都有 UAC執行級別選項 選擇 requireAdministrator 即可

VS2005中沒有此選項,則需要

開啟manifest檔案加入

  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevellevel="requireAdministrator" uiAccess="false"/></requestedPrivileges></security></trustInfo>

道理和第一種方法相同
重點在這個節點
<requestedExecutionLevel level="requireAdministrator" />
表明需要管理員許可權才能執行,此時會自動彈出要求輸入管理員使用者,密碼的介面