vs2010添加清單開啟UAC以管理員權限運行的功能


 

 

 

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);
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM