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);
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top