Instalación del servicio de Windows XPE: ¿cómo establecer la seguridad en CreateService Time?
-
24-09-2019 - |
Pregunta
Estoy usando CreateService para instalar un servicio de Windows en Windows XPE. Me gustaría configurar las cosas para que solo el administrador pueda iniciar/detener/pausar/reanudar el servicio.
Ahora mismo estoy usando lo siguiente para instalar el servicio:
schService = CreateService(schSCManager,
ServiceName,
ServiceDisplayName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
binaryPathName, // service's binary (this program)
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
Y el servicio termina con seguridad de modo que los miembros del grupo Powerusers pueden comenzar y detener el servicio. He descubierto que puedo usar SC SDShow para examinar el descriptor de seguridad, y he resuelto una línea SDDL que haría lo correcto por nosotros.
También aprendí que nuestra instalación Win XPE no tiene el binario SC.EXE, por lo que realmente no podemos usar eso para configurar este sistema en particular.
Entonces, lo que necesito saber es: ¿Cuáles son las API que necesito usar, para establecer el descriptor de seguridad en este servicio? No estoy completamente familiarizado con las API de seguridad de Windows, así que no sé por dónde empezar.
ACTUALIZACIÓN: La respuesta es SetServiceObjectSecurity (a continuación). Siguiente pregunta: ¿Cuál es la mejor manera de configurar el Descriptor de Security? ¿Es mejor obtener el descriptor predeterminado y luego modificarlo? ¿O debería crear un descriptor completamente nuevo?
Solución
No estoy realmente familiarizado con Windows XP incrustado, pero normalmente lograrías lo que eres después de usar el SetServiceObjectSecurity función. Use el mango que obtiene de CreateService y cree un descriptor de seguridad que coincida con lo que desea.