Если я запускаю следующий фрагмент в окне консоли или в ISE, он работает должным образом, перечисляя активные пользовательские сессии на локальном компьютере:
(Invoke-Expression "$env:windir\system32\quser.exe") -replace '\s{2,}', ',' | ConvertFrom-Csv
К сожалению, это не такконсольное приложение, скорее сценарий PowerShell, который устанавливается как служба. Служба работает как LocalSystem (не LocalService). Когда служба пытается запустить этот код, она выдает следующую ошибку:
The term 'C:\Windows\system32\quser.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Я связался со службой поддержки Sapien и получил сообщение, что Служба работает без профиля и не имеетвыполнение доступа к системным папкам. Вам нужно предоставить доступ к выполнению учетной записи службы для exe и его библиотек поддержки, а также использовать полный путь к EXE.
Я доказал (я думаю), что у участника безопасности есть доступ кQUSER. Я использовал PSExen, чтобы открыть консоль PowerShell, работающую как LocalSystem, и успешно запустил приложение quser:
Проблема ДОЛЖНА заключаться в том, что я работаю какоказание услуг. Кто-нибудь знает, как я могу получить доступ / использовать QUser в службе?
Полагаю, реальный вопрос заключается в том, как службы, работающие в качестве LocalSystem, могут запускать приложения в системных папках?