[英]Getting the logged in user when a program is executed as Administrator
当我的程序使用msiexec.exe安装时,它将向任务计划程序中添加一个任务,以检查它是否正在运行,如果没有运行则启动(这是一种售货亭方案)。
WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
string user = windowsIdentity.Name
不幸的是,我的任务被添加为SYSTEM
,当它运行时将无法访问UserEnvironment。 有谁知道一种获取发出该命令的用户而不是运行msiexec.exe的用户的方法吗?
如果需要在安装过程中进行检查-例如,可以在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.