共用方式為


作業物件安全性和訪問許可權

Microsoft Windows 安全性模型可讓您控制作業物件的存取。 如需安全性的詳細資訊,請參閱 Access-Control 模型

當您呼叫 CreateJobObject 函式時,您可以為作業物件指定 安全性描述元。 如果您指定 NULL,作業物件會取得預設的安全性描述元。 作業物件之預設安全性描述元中的 ACL 來自建立者的主要或模擬令牌。

若要取得或設定作業對象的安全性描述元,請呼叫 getNamedSecurityInfoSetNamedSecurityInfoGetSecurityInfoSetSecurityInfo 函式。

作業物件的有效訪問許可權包括 標準訪問許可權 和某些作業特定的訪問許可權。 下表列出所有物件所使用的標準訪問許可權。

價值 意義
DELETE (0x00010000L) 需要刪除物件。
READ_CONTROL (0x00020000L) 需要讀取 物件之安全描述元中的資訊,不包括 SACL 中的資訊。 若要讀取或寫入 SACL,您必須要求 ACCESS_SYSTEM_SECURITY 訪問許可權。 如需詳細資訊,請參閱 SACL 存取權
SYNCHRONIZE (0x001000000L) 使用物件進行同步處理的權利。 這可讓線程等候對象處於訊號狀態。
WRITE_DAC (0x00040000L) 在對象的安全性描述元中修改 DACL 的必要專案。
WRITE_OWNER (0x00080000L) 需要變更 物件之安全性描述元中的擁有者。

 

下表列出作業特定的訪問許可權。

價值 意義
JOB_OBJECT_ALL_ACCESS (0x1F001F) 結合所有有效的作業物件訪問許可權。
JOB_OBJECT_ASSIGN_PROCESS (0x0001) 呼叫 AssignProcessToJobObject 函式以將進程指派給作業物件的必要專案。
JOB_OBJECT_QUERY (0x0004) 需要擷取作業物件的特定資訊,例如屬性和會計資訊(請參閱 QueryInformationJobObjectIsProcessInJob)。
JOB_OBJECT_SET_ATTRIBUTES (0x0002) 需要呼叫 setInformationJobObject函式SetInformationJobObject,才能設定作業對象的屬性。
JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) 不支援此旗標。 您必須針對與作業對象相關聯的每個進程個別設定安全性限制。Windows Server 2003 和 Windows XP: 呼叫 SetInformationJobObject 函式與 JobObjectSecurityLimitInformation 資訊類別,以設定與作業對象相關聯之進程的安全性限制。 Windows Vista 和 Windows Server 2008 已移除此旗標的支援。
JOB_OBJECT_TERMINATE (0x0008) 呼叫 TerminateJobObject 函式以終止作業物件中的所有進程的必要專案。

 

createJobObject所傳回的句柄具有作業物件的 JOB_OBJECT_ALL_ACCESS 存取權。 當您呼叫 OpenJobObject 函式時,系統會根據對象的安全性描述元檢查所要求的訪問許可權。 如果作業對象位於 巢狀作業階層中,則具有作業物件存取權的呼叫端會隱含地存取階層中的所有子作業。

如果您想要讀取或寫入物件的 SACL,您可以要求作業物件的 ACCESS_SYSTEM_SECURITY 存取權限。 如需詳細資訊,請參閱 Access-Control 清單 (ACL)SACL 存取權

您必須針對與作業對象相關聯的每個進程個別設定安全性限制,而不是針對作業物件本身設定它們。 如需詳細資訊,請參閱 處理安全性和存取權限

Windows Server 2003 和 Windows XP: 您可以使用 SetInformationJobObject 函式來設定作業物件的安全性限制。 這項功能已在 Windows Vista 和 Windows Server 2008 中移除。