Domanda

Sto provando ad avviare un servizio come utente e le cose funzionano bene, finché non provo un utente che non ha una password. Quindi, non riesce ad avviarsi (a causa dell'errore di accesso).

Sto facendo qualcosa di sbagliato o è questo " di progettazione " ;?

Il codice per registrare questo servizio:

    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);
È stato utile?

Soluzione

Potrebbe essere dovuto a un requisito di sicurezza del sistema operativo o a una politica di sicurezza. Controlla le politiche di sicurezza per vedere se qualcosa è rilevante lì.

Altri suggerimenti

Sì, era effettivamente correlato alla politica di sicurezza. Per elaborare:

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

" Se si desidera disabilitare la limitazione di accesso alla rete senza password, è possibile farlo tramite la politica di sicurezza locale. L'impostazione del criterio che controlla la restrizione della password vuota può essere modificata utilizzando i criteri di sicurezza locali o gli snap-in MMC Criteri di gruppo. Puoi utilizzare entrambi gli strumenti per trovare questa opzione in Impostazioni di sicurezza \ Criteri locali \ Opzioni di sicurezza . Il nome della politica è Account: Limita l'utilizzo dell'account locale di password vuote solo per l'accesso alla console . È abilitato per impostazione predefinita. & Quot;

Dopo averlo disabilitato, tutto funziona bene.

È necessario specificare una stringa vuota, non NULL se non è presente una password. NULL non è una stringa vuota valida, " " è. Probabilmente dovresti semplicemente passare strPassword per l'ultimo parametro.

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);

Grazie - l'ho provato prima in realtà, ma senza risultati.

Se avvio services.msc, accedo manualmente alle proprietà del servizio e deseleziono i 2 campi password, quindi premi " Applica " e prova ad avviarlo, fallisce anche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top