Pergunta

Eu estou tentando iniciar um serviço como uma multa de usuário e as coisas funcionam, até que eu tente um usuário que não tenha uma senha. Então, ele não consegue iniciar (devido ao log-on de erro).

estou fazendo de errado alguma coisa ou é "por design"?

O código para registar este serviço:

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

Solução

Pode ser devido a um requisito de segurança do sistema operacional ou política de segurança. Verifique as políticas de segurança para ver se algo é relevante lá.

Outras dicas

Sim, foi realmente relacionados com a política de segurança. Para elaborar:

http://technet.microsoft.com/en-us/library /bb457114.aspx

"Se você quiser desativar a restrição contra o desmatamento na rede sem uma senha, você pode fazê-lo através da Política de Segurança Local. A definição de política que a restrição controles em branco senha pode ser modificada usando a MMC Política ou Grupo para a Política de Segurança Local . snap-ins Você pode usar qualquer ferramenta para encontrar esta opção política em Configurações de Segurança \ Diretivas locais \ Opções de segurança o nome da política é Contas:. limite o uso em contas locais de senhas em branco para console de logon única . Ele é ativado por padrão ".

Depois de desabilitar isso, tudo funciona bem.

Você precisa especificar uma cadeia vazia, não NULL se não houver uma senha. NULL não é uma cadeia vazia válida "" é. Provavelmente você deve apenas passar strPassword para o ú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);

Obrigado -. Eu tentei que o primeiro, na verdade, mas sem sucesso

Se eu começar services.msc, ir manualmente para propriedades de serviço e limpar os campos de senha 2, em seguida, pressione "Aplicar" e tentar iniciá-lo, ele também falha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top