我正在写一个小vb应用程序。 我需要知道登录的Windows用户名帐户。 我发现了这个:
Function GetUserName() As String
If TypeOf My.User.CurrentPrincipal Is
Security.Principal.WindowsPrincipal Then
' The application is using Windows authentication.
' The name format is DOMAIN\USERNAME.
Dim parts() As String = Split(My.User.Name, "\")
Dim username As String = parts(1)
Return username
Else
' The application is using custom authentication.
Return My.User.Name
End If
End Function
工作正常但是他给了我执行该过程的用户,所以如果我用管理凭证启动应用程序,这个功能将给我管理用户。 我需要Windows用户而不是执行该过程的用户,我该怎么办?
谢谢!!!
答案 0 :(得分:0)
Environment.UserName
返回正在运行程序的用户
Environment.UserDomainName
返回计算机的名称
我希望我回答你的问题:)
答案 1 :(得分:0)
这将为您提供登录Windows的用户的用户名。 "不是启动该计划的人"
您需要为此导入System.Management。
Imports System.Management
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Coll As ManagementObjectCollection
Dim LogonName As String
Dim GetName As New ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem")
Coll = GetName.[Get]()
LogonName = DirectCast(Coll.Cast(Of ManagementBaseObject)().First()("UserName"), String)
Dim CleanName() As String = Split(LogonName, "\")
Label1.Text = CleanName(1)
End Sub
答案 2 :(得分:0)
好的,我添加到我的参考System.Management,现在工作得很好。谢谢!