登錄機碼安全性和存取權限
Windows 安全性模型可讓您控制登錄機碼的存取。 如需安全性的詳細資訊,請參閱 存取控制模型。
呼叫RegCreateKeyEx或RegSetKeySecurity函式時,您可以指定登錄機碼的安全性描述元。 如果您指定 Null,金鑰會取得預設的安全性描述元。 金鑰的預設安全性描述元中的 ACL 會繼承自其直接父金鑰。
若要取得登錄機碼的安全性描述元,請呼叫 RegGetKeySecurity、 GetNamedSecurityInfo或 GetSecurityInfo 函式。
登錄機碼的有效存取權限包括 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) 。 流覽至所需的索引鍵之後,請移至 [ 編輯 ] 功能表,然後選取 [ 許可權]。