Mar*_*CIK 7 vb.net visual-studio-2010 visual-studio
我正在尝试获取当前用户的用户名.当我以Johnny Smith没有管理员权限的身份登录并运行我的应用程序时,它将返回正确的用户名,Johnny Smith.但问题是,当我右键单击并选择"以管理员身份运行"时,Windows将提示我为管理员登录屏幕,登录后我的应用程序返回用户名admin,而不是当前登录的用户.
我试过了:
strUserLabel.Text = Environment.UserName
Run Code Online (Sandbox Code Playgroud)
也
Dim WSHNetwork = CreateObject("WScript.Network")
Dim strUser = ""
While strUser = ""
strUser = WSHNetwork.Username
End While
strUserLabel.Text = strUser
Run Code Online (Sandbox Code Playgroud)
当提示为管理员时,两者都返回管理员用户名.
我认为上面接受的答案是一种非常消耗资源的查找用户名的方法。它具有包含数百个项目的嵌套循环。在我的 8GP RAM PC 中,这需要 2 秒以上!
怎么样:
SystemInformation.Username、 和Environment.UserDomainName在VS2017中测试
我已经想通了。我使用这个函数来确定用户正在使用哪个进程。在我的代码中,我定义了查找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
Run Code Online (Sandbox Code Playgroud)
索引0将返回用户名
索引1将返回用户的域名
| 归档时间: |
|
| 查看次数: |
22802 次 |
| 最近记录: |