SetServiceObjectSecurity 函式 (winsvc.h)
[SetServiceObjectSecurity 可用於需求一節中指定的操作系統。 它在後續版本中可能會變更或無法使用。 請改用 SetNamedSecurityInfo 函式。]
SetServiceObjectSecurity 函式會設定服務對象的安全性描述元。
語法
BOOL SetServiceObjectSecurity(
[in] SC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation,
[in] PSECURITY_DESCRIPTOR lpSecurityDescriptor
);
參數
[in] hService
服務的句柄。 OpenService 或 CreateService 函式會傳回此句柄。 此句柄所需的存取權取決於 dwSecurityInformation 參數中指定的安全性資訊。
[in] dwSecurityInformation
指定要設定之安全性描述符的元件。 此參數可以是下列值的組合。 請注意, SetServiceObjectSecurity 未處理的旗標將會以無訊息方式忽略。
值 | 意義 |
---|---|
|
設定物件的 DACL) (任意存取控制清單 。 hService 指定的句柄必須具有WRITE_DAC存取權,否則呼叫進程必須是 對象的擁有者。 |
|
設定物件 (SID) 的主要群組 安全組 標識碼。 hService 指定的句柄必須具有WRITE_OWNER存取權,否則呼叫進程必須是 對象的擁有者。 |
|
設定物件的擁有者 SID。 hService 指定的句柄必須具有WRITE_OWNER存取權,或者呼叫進程必須是對象的擁有者,或啟用SE_TAKE_OWNERSHIP_NAME許可權。 |
|
設定 物件的系統存取控制清單 (SACL) 。 hService 指定的句柄必須具有ACCESS_SYSTEM_SECURITY存取權。
若要取得ACCESS_SYSTEM_SECURITY存取權 |
[in] lpSecurityDescriptor
包含新安全性資訊 之SECURITY_DESCRIPTOR 結構的指標。
傳回值
如果函式成功,函式會傳回非零。
如果函式失敗,它會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
服務控制管理員可以設定下列錯誤碼。 服務控制管理員所呼叫的登錄函式可以設定其他錯誤碼。
傳回碼 | Description |
---|---|
|
指定的句柄未以必要的存取權開啟,或者呼叫進程不是 對象的擁有者。 |
|
指定的句柄無效。 |
|
指定的安全性資訊或安全性描述元無效。 |
|
指定的服務已標示為要刪除。 |
備註
SetServiceObjectSecurity 函式會根據 lpSecurityDescriptor 緩衝區中指定的資訊,設定服務物件之安全性描述元的指定部分。 此函式會根據 dwSecurityInformation 參數中設定的旗標,取代與服務對象相關聯的任何或所有安全性資訊,並受限於呼叫 程式的訪問許可權。
建立服務時,服務控制管理員會將預設的安全性描述元指派給服務物件。 若要擷取服務對象的安全性描述元複本,請呼叫 QueryServiceObjectSecurity 函式。 如需服務對象預設安全性描述項的描述,請參閱 服務安全性和訪問許可權。
請注意,授與特定存取權給不受信任的使用者 (,例如SERVICE_CHANGE_CONFIG或SERVICE_STOP) ,可讓他們干擾服務的執行,並可能允許他們以LocalSystem帳戶執行應用程式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winsvc.h (包括 Windows.h) |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |