http://blog.csdn.net/sysprogram/article/details/6710092
http://msdn.microsoft.com/en-us/library/bb756929.aspx
(1)按照《VS2010與Win7共舞:UAC與數據重定向》上述方法,隨便寫一個VS2010工程,編譯,在這個工程的Debug目錄下會有兩個文件: *.exe.embed.manifest 和 *.exe.intermediate.manifest ;
(2)隨便復制一個 .manifest 文件到你現在的工程目錄的資源文件夾(res)下,然后在工程的資源中Import這個文件;
(3)資源文件夾設置為“24”,資源ID設置為“1”;(此步 不知道如何操作...)
mainfest文件例如:
<?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="mulitray.exe.manifest" type="win32" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>
貌似要修改下 assemblyIdentity的name為妙.
我沒有設置 什么資源ID,在編譯 第一次提示錯誤,雙擊錯誤,轉到Debug文件夾下的mainfest, 報錯內容是:
錯誤 1 error c1010001: Values of attribute "level" not equal in different manifest snippets. E:\VC2010SP1Samples\C++\MFC\D2D\MFCGdiInteropSample\Debug\MFCGdiInteropSample.exe.intermediate.manifest 1 1 MFCGdiInteropSample
把對應的requestExecutionLevel 更改,再次編譯運行 就可以有管理員權限了.
話說如何判斷當前程序是否在管理員權限運行,找到下面代碼,沒有驗證...
public static bool IsAdministrator(){ WindowsIdentity identity=WindowsIdentity.GetCurrent(); WindowsPrincipal principal=new WindowsPrincipal(identity); return principal.IsInRole(WindowsBuiltInRole.Administrator); }