繁体   English   中英

MSI执行VB.net应用程序,当前用户返回系统用户,而不是登录用户

[英]MSI executing VB.net application, current user is returning the system user and not the logged on user

我的VB.net编写的应用程序正在由MSI文件执行,我需要获取当前登录的用户(正在运行MSI)。 这是因为我将xml文件导入到任务计划程序中,而没有正确的用户名,则存在映射错误。 当前,由于该应用程序正在通过MSI或Windows安装程序运行,因此正在使用系统用户。 这导致了映射错误,所以我想知道是否还有其他方法可以找到登录的用户。

MsgBox(Environment.UserName)

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

两个消息框都返回“ SYSTEM”,而我需要它来返回实际的登录用户。

您可以尝试使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM