Método GetSD de la clase __SystemSecurity
El método GetSD obtiene el descriptor de seguridad del espacio de nombres al que está conectado el usuario. Este método devuelve un descriptor de seguridad en formato de matriz de bytes binaria. Si va a escribir un script, use el método GetSecurityDescriptor. Para obtener más información, consulte Protección de espacios de nombres WMI y Cambio de la seguridad de acceso en objetos protegibles.
El usuario debe tener el permiso READ_CONTROL. De forma predeterminada, los administradores tienen ese permiso. La única parte del descriptor de seguridad que se usa realmente es la lista de control de acceso discrecional (DACL). La DACL puede contener ACE heredadas y no heredadas. Se permiten los ACE de denegación y permiso.
Si va a programar en C++, puede manipular el descriptor de seguridad binario mediante SDDL y los métodos de conversión ConvertSecurityDescriptorToStringSecurityDescriptor y ConvertStringSecurityDescriptorToSecurityDescriptor.
Sintaxis
HRESULT GetSD(
[out] uint8 SD[]
);
Parámetros
-
SD [salida]
-
Descriptor de seguridad en formato de matriz de bytes binario.
Valor devuelto
Este método devuelve un valor HRESULT que indica el estado de la llamada al método. En la lista siguiente se enumeran los valores devueltos que son significativos para GetSD. En el caso de las aplicaciones de scripting y Visual Basic, el resultado se puede obtener de OutParameters.ReturnValue. Para obtener más información, consulte Construir objetos InParameters y analizar objetos OutParameters.
-
S_OK
-
El método se ejecutó correctamente.
-
WBEM_E_ACCESS_DENIED
-
El autor de la llamada no dispone de permisos suficientes para llamar a este método.
-
WBEM_E_METHOD_DISABLED
-
Se intentó ejecutar este método en un sistema no admitido.
Comentarios
Para obtener más información sobre cómo modificar la seguridad del espacio de nombres mediante programación o manualmente, consulte Protección de espacios de nombres WMI.
Ejemplos
El siguiente script muestra cómo usar GetSD para obtener el descriptor de seguridad actual para el espacio de nombres Root\Cimv2 y cambiarlo a la matriz de bytes que se muestra en 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
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows Vista |
Servidor mínimo compatible |
Windows Server 2008 |
Espacio de nombres |
Todos los espacios de nombres WMI |