![](/img/trans.png)
[英]ASP.NET VB.NET - How to populate Active Directory Logged in Current User's Name into Text Box Field
[英]Finding user name of current logged in user using VB.NET
我正在尝试获取当前用户的用户名。 当我以Johnny Smith
身份登录并在没有管理员权限的情况下运行我的应用程序时,它将返回正确的用户名Johnny Smith
。 但问题是,当我右键单击并选择“以管理员身份运行”时,Windows 将提示我使用管理员登录屏幕,登录后我的应用程序返回用户名admin
,而不是当前登录的用户。
我努力了:
strUserLabel.Text = Environment.UserName
还
Dim WSHNetwork = CreateObject("WScript.Network")
Dim strUser = ""
While strUser = ""
strUser = WSHNetwork.Username
End While
strUserLabel.Text = strUser
当以管理员身份提示时,两者都会返回管理员用户名。
我已经弄清楚了。 我使用了这个函数来确定用户正在使用哪个进程。 在我的代码中,我定义了查找explorer.exe
进程的用户名。
Function GetUserName() As String
Dim selectQuery As Management.SelectQuery = New Management.SelectQuery("Win32_Process")
Dim searcher As Management.ManagementObjectSearcher = New Management.ManagementObjectSearcher(selectQuery)
Dim y As System.Management.ManagementObjectCollection
y = searcher.Get
For Each proc As Management.ManagementObject In y
Dim s(1) As String
proc.InvokeMethod("GetOwner", CType(s, Object()))
Dim n As String = proc("Name").ToString()
If n = "explorer.exe" Then
Return s(0)
End If
Next
End Function
索引 0将返回用户名
索引 1将返回用户的域名
我认为上面接受的答案是一种非常资源密集的方式来查找用户名。 它有几百个项目的嵌套循环。 在我的8GP RAM PC中,这需要2秒多!
怎么样:
SystemInformation.Username
,和 Environment.UserDomainName
在VS2017中测试过
SystemInformation.Username
不适用于某些应用程序。 就我而言,代码正在以System身份运行,但explorer.exe正在以Daniel身份运行。 SystemInformation.Username
报告系统。
如果使用 Identity Dim UserEmail As String = Context.User.Identity.Name.ToString
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.