Función SetServiceObjectSecurity (winsvc.h)
[SetServiceObjectSecurity está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. En su lugar, use la función SetNamedSecurityInfo .]
La función SetServiceObjectSecurity establece el descriptor de seguridad de un objeto de servicio.
Sintaxis
BOOL SetServiceObjectSecurity(
[in] SC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation,
[in] PSECURITY_DESCRIPTOR lpSecurityDescriptor
);
Parámetros
[in] hService
Identificador del servicio. La función OpenService o CreateService devuelve este identificador. El acceso necesario para este identificador depende de la información de seguridad especificada en el parámetro dwSecurityInformation .
[in] dwSecurityInformation
Especifica los componentes del descriptor de seguridad que se va a establecer. Este parámetro puede ser una combinación de los valores siguientes. Tenga en cuenta que las marcas no administradas por SetServiceObjectSecurity se omitirán silenciosamente.
Valor | Significado |
---|---|
|
Establece la lista de control de acceso discrecional (DACL) del objeto . El identificador especificado por hService debe tener acceso WRITE_DAC o el proceso de llamada debe ser el propietario del objeto. |
|
Establece el identificador de seguridad del grupo principal (SID) del objeto. El identificador especificado por hService debe tener WRITE_OWNER acceso o el proceso de llamada debe ser el propietario del objeto. |
|
Establece el SID del propietario del objeto. El identificador especificado por hService debe tener WRITE_OWNER acceso, o el proceso de llamada debe ser el propietario del objeto o tener habilitado el privilegio SE_TAKE_OWNERSHIP_NAME. |
|
Establece la lista de control de acceso del sistema (SACL) del objeto . El identificador especificado por hService debe tener acceso ACCESS_SYSTEM_SECURITY.
Para obtener acceso ACCESS_SYSTEM_SECURITY
|
[in] lpSecurityDescriptor
Puntero a una estructura SECURITY_DESCRIPTOR que contiene la nueva información de seguridad.
Valor devuelto
Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.
Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError.
El administrador de control de servicios puede establecer los siguientes códigos de error. Otros códigos de error se pueden establecer mediante las funciones del Registro a las que llama el administrador de control de servicio.
Código devuelto | Descripción |
---|---|
|
El identificador especificado no se abrió con el acceso necesario o el proceso de llamada no es el propietario del objeto. |
|
El identificador especificado no es válido. |
|
La información de seguridad especificada o el descriptor de seguridad no son válidos. |
|
El servicio especificado se ha marcado para su eliminación. |
Comentarios
La función SetServiceObjectSecurity establece las partes especificadas del descriptor de seguridad del objeto de servicio en función de la información especificada en el búfer lpSecurityDescriptor . Esta función reemplaza cualquier o toda la información de seguridad asociada al objeto de servicio, según las marcas establecidas en el parámetro dwSecurityInformation y sujeto a los derechos de acceso del proceso de llamada.
Cuando se crea un servicio, el administrador de controles de servicio asigna un descriptor de seguridad predeterminado al objeto de servicio. Para recuperar una copia del descriptor de seguridad de un objeto de servicio, llame a la función QueryServiceObjectSecurity . Para obtener una descripción del descriptor de seguridad predeterminado para un objeto de servicio, consulte Derechos de acceso y seguridad del servicio.
Tenga en cuenta que conceder cierto acceso a usuarios que no son de confianza (como SERVICE_CHANGE_CONFIG o SERVICE_STOP) puede permitirles interferir con la ejecución del servicio y, posiblemente, permitirles ejecutar aplicaciones en la cuenta localSystem.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winsvc.h (incluye Windows.h) |
Library | Advapi32.lib |
Archivo DLL | Advapi32.dll |