變更安全性實體物件的存取安全性
印表機、服務、登錄機碼、DCOM 應用程式和 WMI 命名空間都是安全物件。 安全性實體物件的存取會受到 安全性描述項的保護,其會指定具有存取權的使用者。 從 Windows Vista 開始,許多安全性實體物件都有取得或設定安全性描述元的方法。 使用適當的許可權,您可以讀取或變更安全性實體物件上的安全性描述項。 使用這些方法,您可以控制哪些使用者帳戶或群組可以存取印表機、服務、WMI 命名空間或其他物件。 如需安全性描述元及其在 WMI 中使用的詳細資訊,請參閱 WMI 安全性實體物件的存取。
本主題將討論下列各節:
物件和安全性描述元方法
下列清單包含安全性實體物件必須讓您讀取或變更安全描述項的方法:
WMI 命名空間
提供者可以建立只允許特定群組存取 WMI 命名空間中資料的安全性。 命名空間安全性是由 __SystemSecurity 類別上的方法所控制。 從 Windows Vista 開始, GetSecurityDescriptor 和 SetSecurityDescriptor 方法會傳回並寫入 __SecurityDescriptor 物件。 如需詳細資訊,請參閱 設定命名空間安全性描述元。
登錄機碼
從 Windows Vista 開始,您可以保護登錄機碼,讓未經授權的使用者無法變更登錄機碼。 StdRegProv類別具有GetSecurityDescriptor和SetSecurityDescriptor方法。 這些方法會傳回和寫入 Win32_SecurityDescriptor 物件。
印表機
從 Windows Vista 開始,您可以使用GetSecurityDescriptor和SetSecurityDescriptor方法來保護Win32_Printer類別實例的存取。 這些方法會傳回和寫入 Win32_SecurityDescriptor 物件。
服務
從 Windows Vista 開始,您可以使用GetSecurityDescriptor和SetSecurityDescriptor方法來保護Win32_Service類別實例的存取。 這些方法會傳回和寫入 Win32_SecurityDescriptor 物件。
DCOM 應用程式
DCOM 應用程式實例有數個安全性描述項。 從 Windows Vista 開始,請使用 Win32_DCOMApplicationSetting 類別的 方法來取得或變更各種安全性描述元。 安全性描述項會當做 Win32_SecurityDescriptor 類別的實例傳回。
若要取得或變更設定許可權,請呼叫 GetConfigurationSecurityDescriptor 或 SetConfigurationSecurityDescriptor 方法。
若要取得或變更存取權限,請呼叫 GetAccessSecurityDescriptor 或 SetAccessSecurityDescriptor 方法。
若要取得或變更啟動和啟用許可權,請呼叫 GetLaunchSecurityDescriptor 或 SetLaunchSecurityDescriptor 方法,
檔案
GetSecurityDescriptor和SetSecurityDescriptor方法位於Win32_LogicalFileSecuritySetting類別中,而不是在 CIM_DataFile類別中。
共用
GetSecurityDescriptor和SetSecurityDescriptor方法位於Win32_LogicalShareSecuritySetting類別中,而不是在 Win32_Share類別中。
注意
當呼叫SetSecurityDescriptor方法時未指定新的Security 存取控制 List (SACL) ,則目標安全性實體物件上的安全性描述項 SACL 會設定為Null,讓先前的 SACL 設定不會保存。
在安全性描述元格式之間轉換
安全性描述項是複雜的二進位位元組陣列,通常必須在 C++ 中建立和變更。 使用其中一個 Get 方法來取得安全性描述元之後, Win32_SecurityDescriptorHelper 類別會提供方法,將安全性描述元轉換成 安全性描述元定義語言 (SDDL) 或 Win32_SecurityDescriptor 實例。
您可以在Win32_SecurityDescriptor 實例或SDDL 中更輕鬆地操作存取控制清單 (ACL) 。 如需 WMI 中安全性描述項的結構和使用的詳細資訊,請參閱 WMI 安全性描述元物件。
在 C++ 或 C# 中,使用轉換函式將二進位安全性描述元轉換成 安全性描述元定義語言, (SDDL) 。 若要修改 C++ 應用程式中的安全性描述項值,請使用 ConvertSecurityDescriptorToStringSecurityDescriptor 和 ConvertStringSecurityDescriptorToSecurityDescriptor。
安全性問題
建議您謹慎地變更安全性描述元,以免危害物件的安全性。 請注意,存取控制專案的順序 (ACE 在任意存取控制清單中) (DACL) 可能會影響存取安全性。 如需詳細資訊,請參閱 DACL 中的 ACE 順序。
相關主題