¿Cómo puedo obtener el nombre de usuario del propietario del proceso (el usuario que está ejecutando mi programa) en C++?¿Cómo puedo obtener el nombre de usuario de la persona que está ejecutando mi programa?
Respuesta
de Windows
Ejemplo:
char user_name[UNLEN+1];
DWORD user_name_size = sizeof(user_name);
if (GetUserName(user_name, &user_name_size))
cout << "Your user name is: " << user_name << endl;
else
/* Handle error */
Linux
Mira getpwuid:
La función getpwuid() buscará en la base de datos de usuario una entrada con un uid coincidente .
La función getpwuid() devolverá un puntero a una estructura passwd
El struct passwd
contendrá char *pw_name
.
Usa getuid
para obtener la ID de usuario.
Esto es específico del sistema operativo. En Windows, use GetUserName. En Unix, use getuid.
La pregunta es sobre el nombre de usuario local, no el nombre del equipo. –
Este es el nombre de la máquina no usuario local/usuario conectado. – BobbyShaftoe
La pregunta original no estaba clara. He arreglado mi respuesta. –
No es una pregunta relacionada con C++. Puede encontrar información (no 100% segura) en las variables de entorno cuando usa UNIX como sistemas. También puede usar el programa 'id' en estos sistemas.
En general, la manera más rápida es realizar una llamada kernel/API dependiente de la plataforma.
En ventanas bajo cmd.exe, la variable de entorno USERNAME contiene el nombre de usuario (que tampoco es informativo). Busque en la documentación de WINAPI para obtener información precisa.
@Notinlist: ¿qué quiere decir con que no es una pregunta relacionada con C++? Él está usando C++. Esto hace que la pregunta relacionada con C++. Quizás vienes de lugares donde "relacionado con C++" significa solo C++ estándar (como #[email protected]), pero aquí en SO esto se considera muy en el tema :) –
para referencia futura, en todos los sistemas (ventanas incluidas) puede escribir: 'whoami' para obtener el nombre de usuario actual. – chacham15
En Windows, un subproceso se puede suplantar, un proceso no. Para obtener el proceso propietario, debe llamar al GetTokenInformation con la clase de información TokenUser en su token de proceso, esto le dará un SID, este SID se puede convertir a un nombre de usuario con LookupAccountSid. Si no te importa el proceso thread versus, GetUserName() está bien.
En Mac OS X:
getenv("USER");
En Linux:
getenv("USERNAME");
- 1. Obtener el nombre del método actual que se está ejecutando
- 2. ¿Qué usuario está ejecutando mi aplicación Rails?
- 3. ¿Cómo puedo obtener el nombre del usuario que ejecuta mi script de Perl?
- 4. ¿Cómo obtener el nombre de la prueba que se está ejecutando actualmente en spock?
- 5. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
- 6. ¿Obtener instancia de la actividad que se está ejecutando actualmente?
- 7. Obtenga el nombre del método que se está ejecutando actualmente
- 8. Python: cómo obtener el nombre del método de la persona que llama en el método llamado?
- 9. ¿Cómo identifico el nombre de usuario para mi token heroku?
- 10. ¿Cómo puedo obtener el usuario real uid si el programa se ejecuta con sudo?
- 11. ¿Está normalizando el nombre de una persona ir demasiado lejos?
- 12. Obtener el nombre de host de la persona que llama en WCF
- 13. ¿Cómo comprobar que el usuario está "conectado"?
- 14. ¿Cómo puedo hacer que Perl y Python impriman cada línea del programa que se está ejecutando?
- 15. ¿Cómo puedo encontrar en qué sistema operativo se está ejecutando mi programa Ruby?
- 16. ¿Cómo obtengo el identificador de ventana dando el nombre del proceso que se está ejecutando?
- 17. Obtener el módulo de la persona que llama en Ruby
- 18. Determinar si el programa se está ejecutando en Windows Server
- 19. Obtener el nombre del esquema del procedimiento almacenado que se está ejecutando actualmente
- 20. ¿Por qué no está aceptando mi nombre de usuario/contraseña?
- 21. En Subversion ¿puedo ser un usuario que no sea mi nombre de usuario?
- 22. ¿Cómo puedo obtener el nombre de host (con puerto) que un servlet está en
- 23. ¿Mi programa está completo?
- 24. ¿Cómo puedo determinar cuánta memoria está usando mi programa .NET?
- 25. ¿Cómo obtener la ubicación de la DLL que se está ejecutando actualmente?
- 26. Obtener el nombre del programa Java
- 27. ¿Está ejecutando un programa Java desde la línea de comandos que depende de un archivo jar?
- 28. ¿Evita que las ventanas entren en suspensión cuando mi programa se está ejecutando?
- 29. Mostrar el nombre de la función que se está ejecutando actualmente
- 30. Ruby: obtener el archivo que se está ejecutando
Si desea codificar un tamaño de búfer, use 257 (UNLEN + 1) este es el tamaño máximo documentado para un nombre de usuario en Windows – Anders