同步處理物件安全性和存取權限
Windows 安全性模型可讓您控制事件、mutex、號志和可等候計時器物件的存取。 計時器佇列、連結變數和重要區段物件不是安全性實體。 如需詳細資訊,請參閱 存取控制模型。
呼叫CreateEvent、CreateMutex、CreateSemaphore或CreateWaitableTimer函式時,您可以指定進程間同步處理物件的安全性描述元。 如果您指定 Null,物件會取得預設的安全性描述元。 存取控制清單 (ACL) 同步處理物件的預設安全性描述項中,來自建立者的主要或模擬權杖。
若要取得或設定事件、mutex、旗號或可等候計時器物件的安全性描述元,請呼叫GetNamedSecurityInfo、SetNamedSecurityInfo、GetSecurityInfo 或 SetSecurityInfo函式。
CreateEvent、CreateMutex、CreateSemaphore和CreateWaitableTimer所傳回的控制碼具有新物件的完整存取權。 當您呼叫 OpenEvent、 OpenMutex、 OpenSemaphore和 OpenWaitableTimer 函式時,系統會根據物件的安全性描述元檢查所要求的存取權限。
進程間同步處理物件的有效存取權限包括 標準存取權限 和某些物件特定的存取權限。 下表列出所有物件所使用的標準存取權限。
值 | 意義 |
---|---|
DELETE (0x00010000L) | 刪除物件的必要專案。 |
READ_CONTROL (0x00020000L) | 需要讀取物件之安全描述元中的資訊,不包括 SACL 中的資訊。 若要讀取或寫入 SACL,您必須要求 ACCESS_SYSTEM_SECURITY 存取權限。 如需詳細資訊,請參閱 SACL 存取權限。 |
SYNCHRONIZE (0x00100000L) | 使用同步物件的權限。 這可讓執行緒等到物件處於訊號狀態為止。 |
WRITE_DAC (0x00040000L) | 需要修改 物件之安全描述元中的 DACL。 |
WRITE_OWNER (0x00080000L) | 變更物件之安全描述元中擁有者的必要專案。 |
下表列出事件物件的物件特定存取權限。 除了標準存取權限之外,也支援這些許可權。
值 | 意義 |
---|---|
EVENT_ALL_ACCESS (0x1F0003) | 事件物件的所有可能存取權限。 只有在您的應用程式需要標準存取權限和 EVENT_MODIFY_STATE授與以外的存取權時,才使用此許可權。 使用此存取權會增加應用程式必須由系統管理員執行的可能性。 |
EVENT_MODIFY_STATE (0x0002) | 修改SetEvent、ResetEvent 和 PulseEvent函式所需的狀態存取。 |
下表列出 mutex 物件的物件特定存取權限。 除了標準存取權限之外,也支援這些許可權。
值 | 意義 |
---|---|
MUTEX_ALL_ACCESS (0x1F0001) | Mutex 物件的所有可能存取權限。 只有在您的應用程式需要超出標準存取權限授與的存取權時,才使用此許可權。 使用此存取權會增加應用程式必須由系統管理員執行的可能性。 |
MUTEX_MODIFY_STATE (0x0001) | 保留供未來使用。 |
下表列出號志物件的物件特定存取權限。 除了標準存取權限之外,也支援這些許可權。
值 | 意義 |
---|---|
SEMAPHORE_ALL_ACCESS (0x1F0003) | 號志物件的所有可能存取權限。 只有在您的應用程式需要超出標準存取權限和 SEMAPHORE_MODIFY_STATE授與的存取權時,才使用此許可權。 使用此存取權會增加應用程式必須由系統管理員執行的可能性。 |
SEMAPHORE_MODIFY_STATE (0x0002) | 修改 ReleaseSemaphore 函式所需的狀態存取。 |
下表列出可等候計時器物件的物件特定存取權限。 除了標準存取權限之外,也支援這些許可權。
值 | 意義 |
---|---|
TIMER_ALL_ACCESS (0x1F0003) | 所有可等候計時器物件的可能存取權限。 只有當您的應用程式需要超出標準存取權限授與的存取權,並 TIMER_MODIFY_STATE時,才使用此許可權。 使用此存取權會增加應用程式必須由系統管理員執行的可能性。 |
TIMER_MODIFY_STATE (0x0002) | 修改 SetWaitableTimer 和 CancelWaitableTimer 函式所需的狀態存取。 |
TIMER_QUERY_STATE (0x0001) | 保留供未來使用。 |
若要讀取或寫入進程間同步處理物件的 SACL,您必須要求 ACCESS_SYSTEM_SECURITY 存取權限。 如需詳細資訊,請參閱 存取控制清單 (ACL) 和 SACL 存取權限。