Получение авторизованного пользователя при запуске программы от имени администратора
Когда моя программа устанавливается с помощью msiexec.exe, она добавляет задачу в планировщик задач, чтобы проверить, работает ли она, и запускает, если это не так (это сценарий киоска).
WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
string user = windowsIdentity.Name
К сожалению, моя задача добавляется как SYSTEM
который при запуске не сможет получить доступ к UserEnvironment. Кто-нибудь знает способ получить пользователя, который создал команду, а не пользователь msiexec.exe работает как?
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