Метод GetSD класса __SystemSecurity
Метод GetSD получает дескриптор безопасности для пространства имен, к которому подключен пользователь. Этот метод возвращает дескриптор безопасности в двоичном формате массива байтов. Если вы пишете скрипт, используйте метод GetSecurityDescriptor . Дополнительные сведения см. в разделах Защита пространств имен WMI и Изменение безопасности доступа для защищаемых объектов.
Пользователь должен иметь разрешение READ_CONTROL . По умолчанию администраторы имеют это разрешение. Единственной частью дескриптора безопасности, которая фактически используется, является дискреционный список управления доступом (DACL). DaCL может содержать как наследуемые, так и ненаследуемые ACE. Разрешены как запретить, так и разрешить ACE.
При программировании на C++ можно управлять двоичным дескриптором безопасности с помощью SDDL и методов преобразования ConvertSecurityDescriptorToStringSecurityDescriptor и ConvertStringSecurityDescriptorToSecurityDescriptor.
Синтаксис
HRESULT GetSD(
[out] uint8 SD[]
);
Параметры
-
SD [out]
-
Дескриптор безопасности в двоичном формате массива байтов.
Возвращаемое значение
Этот метод возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены возвращаемые значения, имеющие значение для GetSD. Для сценариев и приложений Visual Basic результат можно получить из OutParameters.ReturnValue. Дополнительные сведения см. в разделах Создание объектов InParameters и Анализ объектов OutParameters.
-
S_OK
-
Метод выполнен успешно.
-
WBEM_E_ACCESS_DENIED
-
Вызывающий объект не имеет достаточных прав для вызова этого метода.
-
WBEM_E_METHOD_DISABLED
-
Предпринята попытка запустить этот метод в неподдерживаемой системе.
Комментарии
Дополнительные сведения об изменении безопасности пространства имен программными средствами или вручную см. в разделе Защита пространств имен WMI.
Примеры
В следующем сценарии показано, как с помощью GetSD получить текущий дескриптор безопасности для пространства имен Root\Cimv2 и изменить его на массив байтов, показанный в displaySD.
Set objServices = GetObject("winmgmts:root\cimv2")
Set CimV2 = objServices.Get("__SystemSecurity=@")
ReturnValue = Cimv2.GetSD(arrSD)
If Err <> 0 Then
WScript.Echo "Method returned error " & ReturnValue
End If
DisplaySD = "SD = {"
For I = Lbound(arrSD) To Ubound(arrSD)
DisplaySD = DisplaySD & arrSD(I)
If I <> Ubound(arrSD) Then
DisplaySD = DisplaySD & ","
End If
Next
DisplaySD = DisplaySD & "}"
WScript.Echo DisplaySD
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Пространство имен |
Все пространства имен WMI |