Получение авторизованного пользователя при запуске программы от имени администратора

Когда моя программа устанавливается с помощью 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 
Другие вопросы по тегам