Inicio del servicio como usuario sin contraseña
-
02-07-2019 - |
Pregunta
Estoy tratando de iniciar un servicio como usuario y las cosas funcionan bien, hasta que pruebo un usuario que no tiene una contraseña. Luego, no se inicia (debido a un error de inicio de sesión).
¿Estoy haciendo algo mal o es esto "por diseño"?
El código para registrar este servicio:
SC_HANDLE schService = CreateService(
schSCManager,
strNameNoSpaces,
strServiceName,
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL,
szPath,
NULL,
NULL,
NULL,
strUser,
(strPassword.IsEmpty())?NULL:strPassword);
Solución
Puede deberse a un requisito de seguridad del sistema operativo o una política de seguridad. Verifique las políticas de seguridad para ver si hay algo relevante allí.
Otros consejos
Sí, de hecho estaba relacionado con la política de seguridad. Para elaborar:
http://technet.microsoft.com/en-us/library /bb457114.aspx
" Si desea deshabilitar la restricción contra el inicio de sesión en la red sin contraseña, puede hacerlo a través de la Política de seguridad local. La configuración de la política que controla la restricción de contraseña en blanco se puede modificar mediante la Política de seguridad local o los complementos MMC de la Política de grupo. Puede usar cualquiera de las herramientas para encontrar esta opción de política en Configuración de seguridad \ Políticas locales \ Opciones de seguridad . El nombre de la política es Cuentas: Limite el uso de contraseñas en blanco de la cuenta local para iniciar sesión en la consola únicamente . Está habilitado de forma predeterminada. & Quot;
Después de deshabilitar eso, todo funciona bien.
Debe especificar una cadena vacía, no NULL si no hay contraseña. NULL no es una cadena vacía válida, " " es. Probablemente deberías pasar strPassword
para el último parámetro.
SC_HANDLE schService = CreateService(
schSCManager,
strNameNoSpaces,
strServiceName,
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL,
szPath,
NULL,
NULL,
NULL,
strUser,
// change this line to:
strPassword.IsEmpty() ? L"" : strPassword);
// or maybe
strPassword);
Gracias, lo he intentado primero en realidad, pero fue en vano.
Si inicio services.msc, vaya manualmente a las propiedades del servicio y borre los 2 campos de contraseña, luego presione " Aplicar " e intente iniciarlo, también falla.