Question

J'essaie de démarrer un service en tant qu'utilisateur et tout se passe bien jusqu'à ce que j'essaye d'utiliser un utilisateur sans mot de passe. Ensuite, il ne parvient pas à démarrer (en raison d'une erreur de connexion).

Est-ce que je fais quelque chose de mal ou est-ce "par conception"?

Le code pour enregistrer ce service:

    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);
Était-ce utile?

La solution

Cela peut être dû à une exigence de sécurité du système d'exploitation ou à une politique de sécurité. Vérifiez les politiques de sécurité pour voir si quelque chose est pertinent ici.

Autres conseils

Oui, c'était effectivement lié à la politique de sécurité. Pour élaborer:

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

" Si vous souhaitez désactiver la restriction relative à la connexion au réseau sans mot de passe, vous pouvez le faire via la stratégie de sécurité locale. Le paramètre de stratégie qui contrôle la restriction de mot de passe vide peut être modifié à l'aide des composants logiciels enfichables MMC Stratégie de groupe ou Stratégie de groupe. Vous pouvez utiliser l'un ou l'autre outil pour rechercher cette option de stratégie dans Paramètres de sécurité \ Stratégies locales \ Options de sécurité . Le nom de la stratégie est Comptes: Limitez l'utilisation de mots de passe vierges à un compte local pour la connexion à la console uniquement . Il est activé par défaut. "

Après la désactivation, tout fonctionne correctement.

Vous devez spécifier une chaîne vide, pas NULL s'il n'y a pas de mot de passe. NULL n'est pas une chaîne vide valide, " est. Vous devriez probablement simplement passer strPassword pour le dernier paramètre.

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

Merci. J'ai déjà essayé cette technique, mais en vain.

Si je lance services.msc, accédez manuellement aux propriétés du service et effacez les 2 champs de mot de passe, puis appuyez sur " Appliquer " et essayez de le démarrer, il échoue également.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top