步驟如下:
1. 在工程中新建一個文件,例如mani.xml。
其內容爲
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
<ms_asmv2:security>
<ms_asmv3:requestedPrivileges xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</ms_asmv3:requestedPrivileges>
</ms_asmv2:security>
</ms_asmv2:trustInfo>
</assembly>
藍色的一行是關鍵的。默認是asInvoker。這裏改成requireAdministrator.
2. 右鍵項目,選擇Properties。在Mainfest Tool一節,選擇Input and Output,在Additional Manifest Files中,輸入剛纔創建的xml文件。
3. Rebuild,這時可能會出現一個警告(81010002),不用理會:(注,爲了得到詳細的信息,我把項目屬性 - Manifest Tool - General 中的Suppress Startup Banner 設置成No, Verbose Output 設置成Yes)
1>------ Rebuild All started: Project: test, Configuration: Release Win32 ------
1>Deleting intermediate and output files for project 'test', configuration 'Release|Win32'
1>Compiling...
1>stdafx.cpp
1>Compiling...
1>test.cpp
1>Linking...
1>Generating code
1>Finished generating code
1>Embedding manifest...
1>Microsoft (R) Manifest Tool version 5.2.3790.2075
1>Copyright (c) Microsoft Corporation 2005.
1>All rights reserved.
1>.\mani.xml : manifest authoring warning 81010002: Unrecognized Element "requestedPrivileges" in namespace "urn:schemas-microsoft-com:asm.v3".
1>Build log was saved at "file://f:\myworks\test\test\Release\BuildLog.htm"
1>test - 0 error(s), 1 warning(s)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
然後可以看到生成的exe文件的圖標變了,上面多了個小盾牌:
雙擊運行,彈出了UAC的確認框,OK了。
最後關於上面的警告:VC2005帶的Manifest工具mt.exe是5.2.3790.2025版本的,更新成Windows SDK中帶的6.1.7716.0,那個警告就消失了。
Kudouman補充:
Visual Studio 2005 中的 MT.EXE 在加載 UAC 的 MANIFEST 有問題,
會導致了Windows XP SP2的SXS.DLL崩潰和Windows的藍屏。
1。 使用 Microsoft Windows Vista SDK 裏面的mt.exe替換 Visual Studio 2005 RTM 裏面的mt.exe
2。 使用 Visual Studio 2005 SP1
不知道哪位安裝了 VS 2005 SP1 或者 VISTA SDK 能夠分享一下 MT.EXE 麼? 謝謝
如果是從Microsoft下載Microsoft Windows Vista SDK,安裝以後在C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\mt.exe獲得文件。
如果是 VS 2005 SP1 的話 , 在 C:\Program Files\Microsoft Visual Studio 8\VC\bin\mt.exe
方法2