jua*_*uan 846
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud)
Isr*_*ies 308
如果您在用户网络中,则用户名将不同:
Environment.UserName
- Will Display format : 'Username'
Run Code Online (Sandbox Code Playgroud)
而不是
System.Security.Principal.WindowsIdentity.GetCurrent().Name
- Will Display format : 'NetworkName\Username'
Run Code Online (Sandbox Code Playgroud)
选择所需的格式.
Jar*_*Par 109
试试这个房产:Environment.UserName.
小智 27
Environment.UserName的文档似乎有点冲突:
它在同一页面上说:
获取当前登录到Windows操作系统的人员的用户名.
和
显示启动当前线程的人员的用户名
如果使用RunAs测试Environment.UserName,它将为您提供RunAs用户帐户名,而不是最初登录到Windows的用户.
Shi*_*657 24
我完全赞同其他答案,但我想强调另一种方法
String UserName = Request.LogonUserIdentity.Name;
Run Code Online (Sandbox Code Playgroud)
上面的方法返回了以下格式的用户名:DomainName\UserName.例如,EUROPE\UserName
这与以下内容不同:
String UserName = Environment.UserName;
Run Code Online (Sandbox Code Playgroud)
其中显示的格式为:UserName
最后:
String UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud)
它给出了:( NT AUTHORITY\IUSR在IIS服务器上运行应用程序时)和DomainName\UserName(在本地服务器上运行应用程序时).
小智 21
使用:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
Run Code Online (Sandbox Code Playgroud)
那将是登录名.
jay*_*t55 11
您可能还想尝试使用:
Environment.UserName;
Run Code Online (Sandbox Code Playgroud)
像这样...:
string j = "Your WindowsXP Account Name is: " + Environment.UserName;
Run Code Online (Sandbox Code Playgroud)
希望这有帮助.
Dan*_* E. 10
我尝试了现有答案中的几种组合,但是他们给了我
DefaultAppPool
IIS APPPOOL
IIS APPPOOL\DefaultAppPool
Run Code Online (Sandbox Code Playgroud)
我最终使用了
string vUserName = User.Identity.Name;
Run Code Online (Sandbox Code Playgroud)
这给了我实际的用户域名用户名.
String myUserName = Environment.UserName
Run Code Online (Sandbox Code Playgroud)
这将为您提供输出-your_user_name
我已经尝试了所有以前的答案,并在MSDN上找到答案,因为这些都不适用于我.请参阅'UserName4'以获取正确的信息.
我在登录用户之后,如下所示:
<asp:LoginName ID="LoginName1" runat="server" />
Run Code Online (Sandbox Code Playgroud)
这是我写的一个小功能来尝试它们.我的结果是在每行之后的注释中.
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;
}
Run Code Online (Sandbox Code Playgroud)
调用此函数将返回登录的用户名.
更新:我想指出在我的本地服务器实例上运行此代码向我显示Username4返回""(空字符串),但UserName3和UserName5返回登录用户.只是需要注意的事情.
小智 5
尝试这个
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];
Run Code Online (Sandbox Code Playgroud)
现在看起来好多了
以防万一有人像我一样在寻找用户显示名而不是用户名。
这是请客:
System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName
System.DirectoryServices.AccountManagement在项目中添加对的引用。