Чтобы получить полное имя пользователя в Windows, можно использовать функцию UserFullName: Sub ПримерИспользованияUserFullName() ПолноеИмяПользователяWindows = WMI_UserFullName MsgBox ПолноеИмяПользователяWindows End Sub Данная функция использует интерфейс WMI для получения необходимых данных. Function WMI_UserFullName() As String login$ = CreateObject("WScript.Network").UserName ' читаем логин текущего пользователя Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", , 48) For Each objItem In colItems ' перебираем все учётные записи If objItem.Name = login$ Then WMI_UserFullName = objItem.FullName Next End Function Посмотреть список всех учётных записей пользователей на компьютере можно следующим кодом: Sub WMI_username() Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", , 48) For Each objItem In colItems Debug.Print "FullName: " & objItem.FullName Next End Sub Результат работы этого кода:
Если же вам нужно получить только логин (имя пользователя) Windows, то код будет заметно проще: Sub ПолучениеИмениПользователяWindows() ' первый способ (читаем из переменной окружения) username1 = Environ("USERNAME") Debug.Print "username 1: " & username1 ' второй способ (используем объект WScript.Network) username2 = CreateObject("WScript.Network").UserName Debug.Print "username 2: " & username2 ' третий способ (читаем значение из реестра Windows) key$ = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner" username3 = CreateObject("WScript.Shell").RegRead(key$) ' читаем из реестра Debug.Print "username 3: " & username3 End Sub
PS: При создании этого макроса была использована программа WMI Code Creator:
|
|||


Комментарии
Отправить комментарий