1

当我的程序使用 msiexec.exe 安装时,它会向任务调度程序添加一个任务,以检查它是否正在运行,如果没有则启动(这是一个信息亭场景)。

        WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
        string user = windowsIdentity.Name

不幸的是,我的任务正在添加,因为SYSTEM它在运行时将无法访问 UserEnvironment。有谁知道获取发起命令的用户而不是运行 msiexec.exe 的用户的方法?

4

1 回答 1

1

如果您需要在安装过程中进行检查 - 您可以在 VBScript 上使用自定义操作,例如,在 WMI 的帮助下检查登录用户。

Option Explicit

Dim objReg, objWMI, colSessions

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 

Set colSessions = objWMI.ExecQuery("Select * from Win32_LogonSession Where LogonType = 2 Or LogonType = 10") 
If colSessions.Count <> 0 Then 
    'Some users are logged into Windows.
    'For example set property 
    'Session.Property("SOMEONELOGGED") = "1"
End If 
于 2012-10-31T14:01:21.300 回答