在vs2013中获取当前的Windows配置文件

时间:2014-07-30 23:09:45

标签: vb.net windows user-accounts

我正在写一个小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用户而不是执行该过程的用户,我该怎么办?

谢谢!!!

3 个答案:

答案 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,现在工作得很好。谢谢!