¿Cómo obtengo el nombre de usuario actual en .NET usando C#?¿Cómo obtengo el nombre de usuario actual en .NET usando C#?
Respuesta
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Pruebe la propiedad: Environment.UserName
.
O,' string userName = Environment.UserName; ' – Donut
Atención: como Simon Gillbee mencionado en los comentarios de la respuesta aceptada,' Environment.UsernName' da el Nombre de cuenta registrado, pero 'WindowsIdentity.GetCurrent(). Name' devuelve el nombre de cuenta con el que la aplicación se está ejecutando. – Gerwald
@leo: Precaución: Esa información también es aparentemente incorrecta, consulte [Respuesta de Bolu] (http://stackoverflow.com/questions/1240373/how-do-i-get-the-current-username-in-net-using -C# comment34794502_1240379). :-) –
Uso:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
Ese será el nombre de inicio de sesión.
No si el hilo se está ejecutando en modo elevado. – maxp
También puede intentar usar:
Environment.UserName;
Así ...:
string j = "Your WindowsXP Account Name is: " + Environment.UserName;
Espero que esto haya sido de ayuda.
Si se encuentra en una red de usuarios, entonces el nombre de usuario será diferente:
Environment.UserName
- Will Display format : 'Username'
en lugar de
System.Security.Principal.WindowsIdentity.GetCurrent().Name
- Will Display format : 'NetworkName\Username'
Elija el formato que desee.
Puede usar 'Environment.UserDomainName +" \\ "+ Environment.UserName' para obtener aparentemente el mismo resultado que' System.Security.Principal.WindowsIdentity.GetCurrent(). Name'.Ahora, ¿cuál es la diferencia, preguntas ... no estoy seguro. – Gutblender
Necesitaba que el usuario ejecutara la aplicación en lugar de quién está conectado (Environment.UserName no es lo que quiero), así que hice lo siguiente para quitar el dominio: 'System.Security.Principal.WindowsIdentity.GetCurrent () .Name.Split ('\\') .Last(); ' – thehelix
Tiene que agregar' ToArray() 'después de' Split' antes de llamar 'Last()' – codenamezero
La documentación para Environment.UserName parece ser un poco contradictorios:
En la misma página que dice:
obtiene el nombre de usuario de la persona que es actualmente inició sesión en el sistema operativo de Windows.
Y
muestra el nombre de usuario de la persona que inició el hilo actual
Si el resultado es Environment.UserName usando EjecutarComo, se le dará el nombre de la cuenta de usuario, EjecutarComo no el usuario inició sesión originalmente en Windows.
Use System.Windows.Forms.SystemInformation.UserName
para el usuario que realmente inició sesión como Environment.UserName
devuelve la cuenta utilizada por el proceso actual.
Gracias por compartir, también vea: System.Windows .Forms.SystemInformation.UserDomainName –
Aquí está el código (pero no en C#):
Private m_CurUser As String
Public ReadOnly Property CurrentUser As String
Get
If String.IsNullOrEmpty(m_CurUser) Then
Dim who As System.Security.Principal.IIdentity = System.Security.Principal.WindowsIdentity.GetCurrent()
If who Is Nothing Then
m_CurUser = Environment.UserDomainName & "\" & Environment.UserName
Else
m_CurUser = who.Name
End If
End If
Return m_CurUser
End Get
End Property
Aquí está el código (ahora también en C#):
private string m_CurUser;
public string CurrentUser
{
get
{
if(string.IsNullOrEmpty(m_CurUser))
{
var who = System.Security.Principal.WindowsIdentity.GetCurrent();
if (who == null)
m_CurUser = System.Environment.UserDomainName + @"\" + System.Environment.UserName;
else
m_CurUser = who.Name;
}
return m_CurUser;
}
}
He intentado varias combinaciones de respuestas existentes, pero me estaban dando
DefaultAppPool
IIS APPPOOL
IIS APPPOOL\DefaultAppPool
terminé usando
string vUserName = User.Identity.Name;
Lo que me dio el nombre de usuario del dominio de usuario real solamente.
Excelente. También recibí la identidad del grupo de aplicaciones solamente. Pero tu código resolvió mi problema. Muchas gracias. – SuryaKavitha
Parece que quería el nombre de usuario del usuario que realiza una solicitud, supongo que a un controlador MVC o Web API. Eso es diferente del nombre de usuario con el que se ejecuta el proceso en –
@BenAaronson. La pregunta no dice nada sobre qué nombre de usuario ejecuta un proceso. Necesitaba el nombre de usuario del dominio actualmente conectado y una búsqueda me llevó a esta página, este código terminó dándome lo que necesitaba. –
estoy totalmente de segundas las otras respuestas, pero me gustaría destacar un método más que dice
String UserName = Request.LogonUserIdentity.Name;
El método anterior me devolvió el nombre de usuario en el formato: dominio \ usuario. Por ejemplo, Nombre de usuario EUROPA \
que es diferente de:
String UserName = Environment.UserName;
¿Qué aparece en el formato: Nombre de usuario
Y, por último:
String UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
que dio: NT AUTHORITY\IUSR
(mientras se ejecuta la aplicación en el servidor IIS) y DomainName\UserName
(mientras se ejecuta la aplicación en un servidor local erver).
Obtener el nombre de usuario actual de Windows:
using System;
class Sample
{
public static void Main()
{
Console.WriteLine();
// <-- Keep this information secure! -->
Console.WriteLine("UserName: {0}", Environment.UserName);
}
}
Mi sitio web usa IIS pero cuando visito la página desde otra computadora dentro de la red, sigo viendo "Servicio de red" como nombre de usuario. Probé todas las opciones diferentes pero no me da el usuario conectado que está viendo la página. ¿Alguna idea? – Si8
He intentado todas las respuestas anteriores y encontré la respuesta en MSDN después ninguno de ellos trabajó para mí. Ver 'UserName4' para el correcto para mí.
estoy después de la Usuario conectado, como se muestra por:
<asp:LoginName ID="LoginName1" runat="server" />
He aquí una pequeña función que escribí para probarlas todas. Mi resultado está en los comentarios después de cada fila.
protected string GetLoggedInUsername()
{
string UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; // Gives NT AUTHORITY\SYSTEM
String UserName2 = Request.LogonUserIdentity.Name; // Gives NT AUTHORITY\SYSTEM
String UserName3 = Environment.UserName; // Gives SYSTEM
string UserName4 = HttpContext.Current.User.Identity.Name; // Gives actual user logged on (as seen in <ASP:Login />)
string UserName5 = System.Windows.Forms.SystemInformation.UserName; // Gives SYSTEM
return UserName4;
}
Al llamar a esta función, se devuelve el nombre de usuario registrado al regresar.
Actualización: Me gustaría señalar que al ejecutar este código en mi instancia de servidor local, me muestra que Username4 devuelve "" (una cadena vacía), pero UserName3 y UserName5 devuelven el usuario registrado. Solo algo de lo que tener cuidado.
Mi sitio web usa IIS pero cuando visito la página desde otra computadora dentro de la red, sigo viendo "Servicio de red" como nombre de usuario. Probé todas las opciones diferentes pero no me da el usuario conectado que está viendo la página. ¿Alguna idea? – Si8
NOTA: No está claro, pero el ejemplo anterior se aplica en el contexto de una aplicación web que se ejecuta en IIS, donde varios de ellos mostrarán el nombre de la cuenta de Windows del servidor que ejecuta el grupo de aplicaciones ASP.Net. Si se ejecuta como un programa interactivo o servicio de Windows, el de HttpContext no estará disponible, y uno de los otros se debe usar para buscar la cuenta bajo la cual se ejecuta el proceso. –
Para una aplicación de Windows Forms que iba a distribuirse a varios usuarios, muchos de los cuales inician sesión en vpn, probé varias formas que funcionaron para las pruebas de mi máquina local pero no para otras. Encontré un artículo de Microsoft que adapté y que funciona.
using System;
using System.Security.Principal;
namespace ManageExclusion
{
public static class UserIdentity
{
// concept borrowed from
// https://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity(v=vs.110).aspx
public static string GetUser()
{
IntPtr accountToken = WindowsIdentity.GetCurrent().Token;
WindowsIdentity windowsIdentity = new WindowsIdentity(accountToken);
return windowsIdentity.Name;
}
}
}
probar esto
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];
ahora que se ve mejor
Sólo en caso de que alguien está buscando el usuario Mostrar nombre en contraposición a Nombre de Usuario, como yo .
Aquí está el placer:
System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName
Agregar referencia a System.DirectoryServices.AccountManagement
en su proyecto.
- 1. ¿Cómo obtengo el nombre del usuario actual de Windows en formato de nombre de usuario @ dominio?
- 2. C# - ¿Cómo obtengo el usuario "Todos"?
- 3. Obtenga el nombre de usuario actual en C++ en Windows
- 4. ¿Cómo obtengo el formato JSON en .NET usando C#?
- 5. ¿Cómo obtengo el usuario actual en Perl de manera portátil?
- 6. ¿Cómo obtengo el nombre del directorio actual en Ruby?
- 7. ¿Cómo obtengo el nombre de usuario actualmente registrado de un servicio de Windows en .NET?
- 8. ¿Cómo obtengo el nombre de usuario en Python?
- 9. ¿Cómo obtengo el nombre de usuario en un Makefile?
- 10. Obtener el nombre de usuario actual cuando suplantado
- 11. SharePoint obtiene el nombre de usuario actual?
- 12. ¿Cómo mostrar el nombre de usuario actual en una celda?
- 13. Usando VB6, ¿cómo obtengo el usuario y dominio actual en Windows XP?
- 14. ¿Cómo obtengo la versión publicada actual en una aplicación .NET?
- 15. ¿Cómo obtengo el nombre completo de un usuario en la aplicación de intranet MVP 3 de .net?
- 16. En Python, ¿cómo obtengo el marco actual?
- 17. ¿Cómo obtengo el nombre de la máquina local en C#?
- 18. ¿Recuperar el nombre y apellido del usuario actual de Windows?
- 19. ¿Cómo obtengo la ruta de la carpeta Configuración local del usuario actual en C#?
- 20. JavaScript - Cómo obtener el nombre del usuario actual
- 21. Autenticación de Windows - Obteniendo el nombre de usuario actual
- 22. ¿Cómo obtengo el archivo actual, la clase actual y el método actual con Python?
- 23. ¿Cómo obtengo el título de la ventana activa actual usando C#?
- 24. Obtener el nombre de usuario conectado en C#
- 25. C++ Obtener nombre de usuario Proceso De
- 26. ¿Cómo obtengo el nombre de dominio de host en ASP .NET sin utilizar HttpContext.Current.Request?
- 27. SQL Server - nombre de usuario actual
- 28. ¿Cómo obtengo la URL actual de mi script usando PHP?
- 29. ¿Usuario actual en Magento?
- 30. ¿Cómo obtener el GUID del usuario actual?
¿En qué se diferencia esto de 'Environment.UserName'? –
esto no funcionará en Windows 8, ¿alguna idea de cómo? –
Esta pregunta ya se discutió en este enlace ...... puede ser una pregunta repetida. http://stackoverflow.com/questions/5218778/how-to-get-currently-logged-username-from-windows-service-in-net –