Tengo un paquete de instalación que instala un proceso de servicio que creo. Me gustaría pedirle al usuario el nombre de usuario/contraseña de la cuenta en la que debe ejecutarse el proceso del servicio. Me gustaría verificar que la combinación de nombre de usuario/contraseña sea válida antes de continuar con la instalación. Tengo una DLL de C que estoy usando para un comportamiento de instalación especial, pero no puedo entender cómo usar la API de Windows para verificar las credenciales de una cuenta. Me gustaría poder admitir la misma sintaxis de nombre de cuenta utilizada por el administrador de control de servicio.Verificar el nombre de usuario y la contraseña de la cuenta de Windows
Respuesta
La función que desea utilizar es LogonUser. Incluso puede ser muy interesante y especificar el indicador LOGON32_LOGON_SERVICE que verifica para asegurarse de que el usuario tenga los permisos adecuados para ejecutar un servicio.
LogonUser es la manera canónica de hacer esto, aunque Microsoft algo discourages it.
Lo he implementado usando la función LogonUser como ustedes mencionaron (por cierto, este servicio requiere WinXP SP2 o posterior, así que no estoy preocupado por el problema del privilegio). Sin embargo, esto no está funcionando como esperaba. Si llamo a QueryServiceConfig, lpServiceStartName tiene el formato ". \ Accountname". Si paso esta cadena como está en LogonUser, falla. ¿Supongo que la parte antes de '\' representa la máquina a la que pertenece el usuario?
Además, si llamo a ChangeServiceConfig especificando "LocalSystem" y "" para los parámetros lpServiceStartName y lpPassword respectivamente, esto funciona bien. Sin embargo, llamar a LogonUser con estos parámetros no funciona.
Realmente me gustaría utilizar la misma sintaxis que utiliza SCM para los nombres de cuenta.
Necesita dividir el dominio del nombre de usuario. Los '.' funcionará como el dominio de LogonUser (se correlaciona con el espacio de nombres del sistema local), pero debe dividir el nombre de usuario completo. – Nick
Además, no puede iniciar sesión explícitamente como LocalSystem usando la API (hasta donde yo sé). Tendrá que hacer un caso especial de esta cuenta, y el par de otras cuentas integradas (que se encuentran en el espacio de nombres NT_AUTHORITY). – Nick
- 1. android get gmail nombre de usuario y contraseña del administrador de la cuenta
- 2. Comprobando el nombre de usuario y la contraseña en Android
- 3. Cómo almacenar mejor la información de usuario y el nombre de usuario y la contraseña
- 4. ¿Cómo comprobar si el nombre de la cuenta de usuario de Windows existe en el dominio?
- 5. LDAP - ¿Cómo verificar una combinación de nombre de usuario/contraseña?
- 6. Quitar el nombre de usuario SVN y la contraseña de Eclipse no funciona en Windows 7
- 7. Python - Cómo abrir Windows comparte usando el nombre de usuario y la contraseña
- 8. Symfony2: ¿Cómo mostrar el nombre de la cuenta de administrador al suplantar la cuenta de usuario?
- 9. Base de datos + Autenticación de Windows + Nombre de usuario/Contraseña?
- 10. nombre de usuario y contraseña en sqlite3
- 11. Android: verificar el nombre de la cuenta de google del dispositivo en el servidor
- 12. Autenticación de Windows solicita nombre de usuario/contraseña
- 13. ¿Cómo configuro el nombre de usuario y la contraseña de la aplicación Tomcat Manager para NetBeans?
- 14. ¿Suplantar con nombre de usuario y contraseña?
- 15. cómo configurar el nombre de usuario y la contraseña del servicio de Windows a través de la línea de comandos
- 16. compruebe el nombre de usuario y la contraseña de Unix en un shellscript
- 17. Ejecute mstsc.exe con el nombre de usuario y la contraseña especificados
- 18. Forma correcta de obtener el nombre de usuario y la contraseña de la cadena de conexión?
- 19. Almacenar la contraseña por separado desde el nombre de usuario
- 20. TeamCity Nombre de usuario/contraseña
- 21. La mejor manera de manejar la autenticación de cuenta de usuario y las contraseñas
- 22. Cómo verificar C# si la cuenta de usuario está activa
- 23. ¿Cómo puedo proteger el nombre de usuario y la contraseña de MySQL de la descompilación?
- 24. cómo usar el nombre de usuario y la contraseña suministrados para leer un archivo en Java
- 25. Cómo encontrar el nombre de usuario y la contraseña para la base de datos mysql
- 26. Cómo eliminar la cuenta de usuario de Windows usando C#
- 27. Seguridad de nombre de usuario y contraseña de ASMX
- 28. Idea: ¿Crear usuario sin contraseña y luego requerir contraseña para usar la cuenta?
- 29. HttpListener: cómo obtener el usuario y la contraseña de http?
- 30. Cómo obtener el token de github usando el nombre de usuario y la contraseña
Solo tenga en cuenta que en las versiones anteriores del sistema operativo (Win2K y anteriores) la API LogonUser() requiere un alto privilegio ("Actuar como parte del sistema operativo"). –