How to get Windows user name using different methods? How to get Windows user name using different methods? windows windows

How to get Windows user name using different methods?


Environment.UserName calls GetUserName within advapi32.dll. This means that if you're impersonating another user, this property will reflect that.

Thread.CurrentPrincipal has a setter and can be changed programmatically. (This is not impersonation btw.)

WindowsIdentity is your current windows identity, if any. It will not necessarily reflect the user, think ASP.NET with FormsAuthentication. Then the WindowsIdentity will be the NT-service, but the FormsIdentity will be the logged in user. There's also a PassportIdentity, and you can build your own stuff to complicate things further.


You asked for alternative ways.

Of course, you can always use the native Windows API: GetUserName.


I believe the property was put in several places so that it would be easier for the programmer to find. There's only one logged in user, and only one respective name.