Поделиться через


Метод 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

См. также раздел

Системные классы WMI

__SystemSecurity

Константы безопасности WMI

Win32_ACE

__SystemSecurity::SetSD

Security_Descriptor

Win32_SecurityDescriptor

Защита пространств имен WMI