首頁 >後端開發 >C++ >如何授予我的 Windows 應用程式提升權限以修改受保護的登錄項目?

如何授予我的 Windows 應用程式提升權限以修改受保護的登錄項目?

Patricia Arquette
Patricia Arquette原創
2025-01-03 02:30:39607瀏覽

How Can I Grant My Windows Application Elevation Privileges to Modify Protected Registry Keys?

在現代Windows 環境中授予註冊表修改權限

在Windows 程式設計世界中,修改HKEY_CLASSES_ROOT 下的登錄機碼曾經是一項項簡單的任務。然而,隨著Windows 7 的出現及其對使用者帳戶控制(UAC) 的重視,開發人員可能會遇到錯誤「不允許要求的註冊表存取。」

此限制源自於大多數應用程式運行時Windows 7 及更高版本中的標準使用者權限。若要修改受保護的登錄項目(例如 HKEY_CLASSES_ROOT 下的登錄項目),應用程式需要管理權限。

增強您的程式碼以支援UAC

要向您的調整實用程式授予必要的提升權限,您必須實施以下解決方案:

1。使用應用程式清單:

在應用程式目錄中建立一個副檔名為「.manifest」的清單檔案。

2.設定清單:

在清單檔案中,定義以下XML 結構:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
         </requestedPrivileges>
      </security>
   </trustInfo>
</asmv1:assembly>

3.連結清單:

在您的 C在程式碼中,將以下行新增至預處理器指令部分:

#pragma comment(linker,"/manifestdependency:\"MyApplication.manifest\"")

透過實作這些步驟,您可以指示系統您的應用程式需要執行登錄機碼修改的管理員權限。當應用程式啟動時,Windows 將自動提示使用者授予權限,允許您的調整實用程式存取受保護的登錄項目。

以上是如何授予我的 Windows 應用程式提升權限以修改受保護的登錄項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn