Ho un pacchetto di installazione che installa un processo di servizio che creo. Vorrei chiedere all'utente il nome utente/password dell'account su cui dovrebbe essere eseguito il processo di servizio. Vorrei verificare che la combinazione nome utente/password sia valida prima di continuare con l'installazione. Ho una DLL C che sto usando per un comportamento di installazione speciale, ma non riesco a capire come usare l'API di Windows per verificare le credenziali di un account. Mi piacerebbe essere in grado di supportare la stessa sintassi del nome account utilizzata dal gestore controllo servizi.Verifica nome utente e password dell'account Windows
risposta
La funzione che si desidera utilizzare è LogonUser. Puoi anche essere straordinariamente cool e specificare il flag LOGON32_LOGON_SERVICE che verifica che l'utente disponga delle autorizzazioni appropriate per eseguire un servizio.
LogonUser è il modo canonico per fare ciò, sebbene Microsoft in qualche modo discourages it.
L'ho implementato utilizzando la funzione LogonUser come avete detto (a proposito, questo servizio richiede WinXP SP2 o successivo quindi non sono preoccupato per il problema dei privilegi). Tuttavia, questo non funziona come speravo. Se chiamo QueryServiceConfig, lpServiceStartName è nel formato ". \ Accountname". Se passo questa stringa come a LogonUser, fallisce. Presumo la parte prima che '\' rappresenti la macchina su cui l'utente appartiene?
Inoltre, se chiamo ChangeServiceConfig specificando "LocalSystem" e "" rispettivamente per i parametri lpServiceStartName e lpPassword, questo funziona correttamente. Tuttavia, chiamare LogonUser con questi parametri non funziona.
Mi piacerebbe molto usare la stessa sintassi utilizzata da SCM per i nomi degli account.
Devi dividere il dominio dal nome utente. Il '.' funzionerà come dominio per LogonUser (si associa allo spazio dei nomi di sistema locale), ma è necessario dividere il nome utente completo. – Nick
Inoltre, non è possibile accedere in modo esplicito come LocalSystem utilizzando l'API (per quanto ne so). Dovrai applicare questo caso a un caso speciale e la coppia di altri account predefiniti (che si trovano nello spazio dei nomi NT_AUTHORITY). – Nick
- 1. Verifica nome utente e password in Android
- 2. Database + Autenticazione di Windows + Nome utente/password?
- 3. Autenticazione Windows richiede nome utente/password
- 4. Identità ASP.NET Password personalizzata Verifica con nome utente
- 5. TeamCity Nome utente/password
- 6. Android: memorizzando nome utente e password?
- 7. Sicurezza nome utente e password ASMX
- 8. Impersonare con nome utente e password?
- 9. JOptionPane con nome utente e immissione password
- 10. Passando nome utente e password a svcutil.exe?
- 11. Verifica utente e password su un file creato da htpasswd
- 12. WCF - BasicHttpBinding, non sono disponibili nome utente e/o password, nome: null, password: null
- 13. Sicurezza oltre un nome utente/password?
- 14. Memorizza password separatamente dal nome utente
- 15. Modifica nome utente/password predefiniti in RockMongo
- 16. Nome utente dell'API Google Drive + autenticazione password
- 17. Come impostare nome utente/password in httpget
- 18. - Verifica se il nome utente esiste
- 19. La rimozione di nome utente e password SVN da Eclipse non funziona in Windows 7
- 20. Python - Come aprire la condivisione di Windows utilizzando nome utente e password
- 21. Scaricare un file con password e nome utente con C#
- 22. android get gmail nome utente e password dal gestore account
- 23. Usa nome utente/password con git e bitbucket
- 24. Applicazione semplice per nome utente e password in Python
- 25. Come specificare nome utente e password sul docker push?
- 26. Come passare nome utente e password nell'API REST di TeamCity
- 27. Utilizzo di Xamarin.Auth per l'autenticazione OAuth2: nome utente e password?
- 28. Come rendere Egit ricordare password e nome utente?
- 29. Git Push - Nome utente e password nell'URL remoto
Ricorda che nelle versioni precedenti del sistema operativo (Win2K e versioni precedenti) l'API LogonUser() richiede un elevato privilegio ("Agisci come parte del sistema operativo"). –