Мне было интересно, есть ли простой способ использовать WMI, чтобы получить текущее имя пользователя Windows с доменом. Вызов Windows API просто дает вам короткое имя пользователя, поэтому вы в конечном итоге делаете еще один вызов для имени домена. У меня есть код, но я получаю ошибку автоматизации.
Есть идеи? Я думаю, что я на правильном пути, но я немного новичок в WMI.
Function GetFullName() As String
Dim computer As String
computer = "."
Dim objWMIService, colProcessList As Object
Set objWMIService = GetObject("winmgmts:\\" & computer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("SELECT TOP 1 * FROM Win32_Process WHERE Name = 'EXCEL.EXE'")
Dim uname, udomain As String
Dim objProcess As Object
For Each objProcess In colProcessList
objProcess.GetOwner uname, udomain
Next
GetFullName = UCase(udomain) & "\" & UCase(uname)
End Function
ОБНОВЛЕНИЕ: см. Комментарии к принятому ответу