MSI выполняет приложение VB.net, текущий пользователь возвращает системного пользователя, а не зарегистрированного пользователя - PullRequest
1 голос
/ 17 июня 2019

Мое письменное приложение на VB.net выполняется с помощью файла MSI, и мне нужно получить зарегистрированного пользователя (который работает с MSI).Это связано с тем, что я импортирую XML-файлы в планировщик задач и без правильного имени пользователя возникает ошибка сопоставления.В настоящее время, поскольку приложение запускается через установщик MSI или Windows, используется системный пользователь.Это вызывает ошибку сопоставления, поэтому мне было интересно, есть ли какой-либо другой способ найти вошедшего в систему пользователя.

MsgBox(Environment.UserName)

Dim WSHNetwork = CreateObject("WScript.Network")
MsgBox(WSHNetwork.Username)

Оба поля сообщения возвращают "SYSTEM", тогда как мне нужно, чтобы он возвращал фактическое имя пользователя, вошедшего в систему.пользователь.

1 Ответ

0 голосов
/ 18 июня 2019

Вы можете попробовать использовать WMI:

Dim username, objItem
Dim objWMIService  : Set objWMIService = GetObject( "winmgmts:\\.\root\cimv2" )
Dim colItems  : Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem" )

For Each objItem in colItems
    username = objItem.UserName
    if (instr(username ,"\") > 0) Then
        username = Split(username, "\")(1)
    end if   
Next
msgbox username

Или Quser:

Dim strCmd : strCmd = "cmd /q /c for /f ""skip=1 tokens=1"" %a in ('quser console') do @echo %a"
username = CreateObject("WScript.Shell").Exec(strCmd).StdOut.ReadAll()
username = Right(username,Len(username)-1)
msgbox username
...