共用方式為


queryServiceObjectSecurity 函式 (winsvc.h)

QueryServiceObjectSecurity 函式會擷取與服務對象相關聯的安全性描述元複本。 您也可以使用 GetNamedSecurityInfo 函式來擷取安全性描述元。

語法

BOOL QueryServiceObjectSecurity(
  [in]            SC_HANDLE            hService,
  [in]            SECURITY_INFORMATION dwSecurityInformation,
  [out, optional] PSECURITY_DESCRIPTOR lpSecurityDescriptor,
  [in]            DWORD                cbBufSize,
  [out]           LPDWORD              pcbBytesNeeded
);

參數

[in] hService

服務控制管理員或服務的句柄。 對服務控制管理員的句柄是由 OpenSCManager 函式傳回,而對服務的句柄則由 OpenServiceCreateService 函式傳回。 句柄必須具有READ_CONTROL訪問許可權。

[in] dwSecurityInformation

一組位旗標,指出要擷取的安全性信息類型。 此參數可以是 SECURITY_INFORMATION 位旗標的組合,但此函式不支援 LABEL_SECURITY_INFORMATION 值。

[out, optional] lpSecurityDescriptor

緩衝區的指標,接收指定之服務物件之安全性描述元的複本。 呼叫進程必須具有適當的存取權,才能檢視 物件之安全性描述元的指定層面。 SECURITY_DESCRIPTOR 結構會以自我相對格式傳回。

[in] cbBufSize

lpSecurityDescriptor 參數所指向的緩衝區大小,以位元組為單位。 允許的大小上限為 8 KB。

[out] pcbBytesNeeded

當函式失敗時,接收傳回要求之安全性描述元資訊所需位元組數目的變數指標。

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

服務控制管理員可能會設定下列錯誤碼。 服務控制管理員所呼叫的登錄函式可能會設定其他錯誤碼。

傳回碼 Description
ERROR_ACCESS_DENIED
指定的句柄未以READ_CONTROL存取方式開啟,或呼叫進程不是對象的擁有者。
ERROR_INVALID_HANDLE
指定的句柄無效。
ERROR_INSUFFICIENT_BUFFER
安全性描述項資訊對於 lpSecurityDescriptor 緩衝區而言太大。 取得所有資訊所需的位元組數目會傳回 於BytesNeeded 參數 中。 不會寫入 lpSecurityDescriptor 緩衝區。
ERROR_INVALID_PARAMETER
指定的安全性信息無效。

備註

建立服務時,服務控制管理員會將預設的安全性描述元指派給服務物件。 若要擷取服務對象的安全性描述元複本,請呼叫 QueryServiceObjectSecurity 函式。 若要變更安全性描述元,請呼叫 SetServiceObjectSecurity 函式。 如需服務對象預設安全性描述項的描述,請參閱 服務安全性和訪問許可權

若要從服務對象的安全性描述元讀取擁有者、群組或 DACL,呼叫程式必須在開啟句柄時授與READ_CONTROL存取權。 若要取得READ_CONTROL存取權,呼叫端必須是對象的擁有者,或物件的 DACL 必須授與存取權。

若要從安全性描述元讀取 SACL,呼叫進程必須在開啟句柄時授與ACCESS_SYSTEM_SECURITY存取權。 取得此存取權的正確方法是啟用呼叫端目前令牌中的SE_SECURITY_NAME許可權、開啟ACCESS_SYSTEM_SECURITY存取的句柄,然後停用許可權。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 winsvc.h (包括 Windows.h)
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

CreateService

GetNamedSecurityInfo

低階 存取控制

低階 存取控制 函式

OpenService

SECURITY_DESCRIPTOR

SetServiceObjectSecurity