登錄機碼安全性和存取權限

Windows 安全性模型可讓您控制登錄機碼的存取。 如需安全性的詳細資訊,請參閱 存取控制模型

呼叫RegCreateKeyExRegSetKeySecurity函式時,您可以指定登錄機碼的安全性描述元。 如果您指定 Null,金鑰會取得預設的安全性描述元。 金鑰的預設安全性描述元中的 ACL 會繼承自其直接父金鑰。

若要取得登錄機碼的安全性描述元,請呼叫 RegGetKeySecurityGetNamedSecurityInfoGetSecurityInfo 函式。

登錄機碼的有效存取權限包括 DELETE、READ_CONTROL、WRITE_DAC,以及標準 存取權限WRITE_OWNER。 登錄機碼不支援 SYNCHRONIZE 標準存取權。

下表列出登錄機碼物件的特定存取權限。

意義
KEY_ALL_ACCESS (0xF003F)
結合STANDARD_RIGHTS_REQUIRED、KEY_QUERY_VALUE、KEY_SET_VALUE、KEY_CREATE_SUB_KEY、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY和KEY_CREATE_LINK存取權限。
KEY_CREATE_LINK (0x0020)
保留供系統使用。
KEY_CREATE_SUB_KEY (0x0004)
建立登錄機碼子機碼的必要專案。
KEY_ENUMERATE_SUB_KEYS (0x0008)
列舉登錄機碼子機碼的必要專案。
KEY_EXECUTE (0x20019)
相當於 KEY_READ。
KEY_NOTIFY (0x0010)
需要要求登錄機碼或登錄機碼子機碼的變更通知。
KEY_QUERY_VALUE (0x0001)
需要查詢登錄機碼的值。
KEY_READ (0x20019)
結合STANDARD_RIGHTS_READ、KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS和KEY_NOTIFY值。
KEY_SET_VALUE (0x0002)
建立、刪除或設定登錄值的必要專案。
KEY_WOW64_32KEY (0x0200)
指出 64 位 Windows 上的應用程式應該在 32 位登錄檢視上運作。 32 位 Windows 會忽略此旗標。 如需詳細資訊,請參閱 存取替代登錄檢視
此旗標必須使用 OR 運算子與此資料表中的其他旗標結合,以便查詢或存取登錄值。
Windows 2000: 不支援此旗標。
KEY_WOW64_64KEY (0x0100)
指出 64 位 Windows 上的應用程式應該在 64 位登錄檢視上運作。 32 位 Windows 會忽略此旗標。 如需詳細資訊,請參閱 存取替代登錄檢視
此旗標必須使用 OR 運算子與此資料表中的其他旗標結合,以便查詢或存取登錄值。
Windows 2000: 不支援此旗標。
KEY_WRITE (0x20006)
結合STANDARD_RIGHTS_WRITE、KEY_SET_VALUE和KEY_CREATE_SUB_KEY存取權限。

當您呼叫 RegOpenKeyEx 函式時,系統會根據金鑰的安全性描述元檢查所要求的存取權限。 如果使用者沒有登錄機碼的正確存取權,則開啟的作業會失敗。 如果系統管理員需要金鑰的存取權,解決方案就是啟用SE_TAKE_OWNERSHIP_NAME許可權,並使用WRITE_OWNER存取權開啟登錄機碼。 如需詳細資訊,請參閱 啟用和停用許可權

如果您想要讀取或寫入金鑰的系統存取控制清單, (SACL) ,您可以要求登錄機碼的ACCESS_SYSTEM_SECURITY存取權。 如需詳細資訊,請參閱 存取控制清單 (ACL) SACL 存取權限

若要檢視金鑰的目前存取權限,包括預先定義的金鑰,請使用登錄編輯程式 (Regedt32.exe) 。 流覽至所需的索引鍵之後,請移至 [ 編輯 ] 功能表,然後選取 [ 許可權]。