Win7 下運行VC程序UAC權(quán)限問題

在Win7運行VC程序往往受到UAC權(quán)限不夠的問題,以下有幾個方法獲得管理員權(quán)限

1、通過代碼提升用戶權(quán)限,代碼如下:

BOOL UpgradeProcessPrivilege(HANDLE hProcess, LPCTSTR lpPrivilegeName )
{
   HANDLE hToken = NULL;
   if(OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken))
   {
       LUID Luid;
      if(LookupPrivilegeValue(NULL, lpPrivilegeName, &Luid))
      {
         TOKEN_PRIVILEGES tp;
         tp.PrivilegeCount = 1;
         tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
         tp.Privileges[0].Luid = Luid;
         return( AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL) ); 
      }
   }
   return FALSE;
}

// 使用
UpgradeProcessPrivilege(GetCurrentProcess(), SE_DEBUG_NAME);

2、導(dǎo)入manifest文件

如果你使用的是VC6或以上版本IDE,通過導(dǎo)入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="IsUserAdmin"
     type="win32"/>
  <description>Description of your application</description>
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

注:此文件只要擴展名是.manifest文件名可以任意。文件內(nèi)容的name屬性值也可以為任意。(VC6.0下經(jīng)過測試)

把此文件"import"到資源文件中,資源類型為24,資源ID為1,注:經(jīng)測試資源類型必須為24,資源ID也必須為1,

重新編輯即可,在windows7下該程序圖標(biāo)有一個盾狀小圖標(biāo),雙擊運行會出現(xiàn)對話框要求提升為管理員權(quán)限。

3、如果是vs2008或者2010,設(shè)為連接器清單文件的uac執(zhí)行級別

直接項目右鍵---屬性---連接器---清單文件---uac執(zhí)行級別 選擇requireAdministrator 重新編譯

這樣你的程序直接運行就擁有管理員權(quán)限了。程序就會出現(xiàn)一個盾牌。

因本人使用VS2010,用這個方法編譯過好幾個程序,暫無發(fā)現(xiàn)問題

4、修改注冊表:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\Program Files\win7test2.exe"="RUNASADMIN"

將上面的內(nèi)容保存為.reg文件,基中把C:\Program Files\win7test2.exe改為真實環(huán)境的應(yīng)用程序地址,雙擊運行即可。

這種方法后應(yīng)用程序圖標(biāo)不會有盾狀圖標(biāo),但雙擊運行仍然會彈出對話框要求提升權(quán)限。

參考鏈接:Win7下運行VC程序UAC權(quán)限問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容