Используя VB6, как мне получить текущего пользователя и домен в Windows XP? - PullRequest
5 голосов
/ 03 декабря 2008

Мне нужен текущий пользователь и домен. Я использую приложение VB 6.

Спасибо

Ответы [ 5 ]

15 голосов
/ 03 декабря 2008

Одним из способов было бы спросить окружение:

Dim UserName As String
Dim UserDomain As String
UserName   = Environ("USERNAME")
UserDomain = Environ("USERDOMAIN")

(Работает на Windows NT и выше, очевидно.)

8 голосов
/ 03 декабря 2008

И API-версия:

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long  

Declare Function LookupAccountName Lib "advapi32.dll" Alias "LookupAccountNameA" (lpSystemName As String, ByVal lpAccountName As String, sid As Any, cbSid As Long, ByVal ReferencedDomainName As String, cbReferencedDomainName As Long, peUse As Long) As Long

Private Sub Form_Load()  
     Dim sDomainName As String * 255   
     Dim lDomainNameLength As Long     
     Dim sUserName as String
     Dim bUserSid(255) As Byte      
     Dim lSIDType As Long 

    Rem Create a buffer
    sUserName = String(100, Chr$(0))  

    Rem Get the username
     GetUserName sUserName, 100  

    Rem strip the rest of the buffer
    sUserName = Left$(sUserName, InStr(sUserName, Chr$(0)) - 1)

     rem Show the temppath and the username
     MsgBox "Hello " + strUserName 

     lResult = LookupAccountName(vbNullString, sUserName, bUserSid(0), 255, sDomainName, lDomainNameLength, _
  lSIDType)
    if lResult <>0 then
       msgbox sDomainName
    end if
end sub
4 голосов
/ 03 декабря 2008

Используйте следующие методы объекта WshNetwork, который доступен после ссылки на объектную модель хоста сценариев Windows в вашем проекте:

Dim Network As WshNetwork
Set Network = New WshNetwork

Debug.Print "ComputerName: " & Network.ComputerName
Debug.Print "UserDomain: " & Network.UserDomain
Debug.Print "UserName: " & Network.UserName

Я приведу результаты в верхний или нижний регистр для согласованности, но это те методы, которые вам нужны.

Обратите внимание, что при запуске на компьютере, который не вошел в домен, и ComputerName, и UserDomain возвращают одно и то же - имя компьютера.

2 голосов
/ 03 декабря 2008

В основном вам нужно совершать вызовы Windows API. В поисках vbnet.mvps.org я получаю следующие ответы.

0 голосов
/ 03 декабря 2008

Как насчет этого?

Private Function IsAdmin() As Boolean
Dim groups As Object
Dim user As Object

Set groups = GetObject("WinNT://./administrators")

For Each user In groups.members

If UCase(Environ("USERNAME")) = UCase(user.Name) Then
IsAdmin = True
End If

Next user

End Function
...