Я написал C # Windows Service (для использования в Windows 8.1 (32/64 бит) и Windows 10), который отслеживает определенные условия, и когда они выполняются, он запускает другое приложение Windows Forms с некоторыми аргументами, управляющими сообщениемотображается для пользователя.Мне хорошо известны проблемы взаимодействия службы с сеансом пользователя, и служба использует (слегка) измененную версию кода MSDN для запуска процессов из службы в сеансе пользователя, которая доступна здесь: https://code.msdn.microsoft.com/windowsapps/CSCreateProcessAsUserFromSe-b682134e#content
Когда служба запущена, она с радостью запустит Блокнот в сеансе пользователя, если указанная мной переменная launchpath имеет значение C: \ Windows \ sysnative \ notepad.exe
Однако, если япопробуйте вызвать мое другое приложение WinForms с помощью командной строки:
string launchpath = "\"{0}Kiosk.exe\" \"{1}\" \"{2}\"";
Где {0} заменяется на:
launchpath = launchpath.Replace("{0}", AppDomain.CurrentDomain.BaseDirectory);
и два других заполнителя ({1} и {2}) заменяются аргументами запуска, машина, на которой запускается служба, регистрирует системный код ошибки 123, который, как мне говорит эта ссылка https://docs.microsoft.com/en-us/windows/desktop/debug/system-error-codes--0-499-), означает «неверный синтаксис имени файла, имени каталога или метки тома».
Я попытался жестко запрограммировать путь, переместив приложение WinForms, чтобы путь выполнения также находился в каталоге c: \ windows \ sysnative, но, похоже, ничего не работает, я всегда получаюта же ошибка в логах и приложение не загружается.Если я сделаю ярлык для приложения kiosk.exe, чтобы передать некоторые тестовые аргументы, он запустится нормально.
Кто-нибудь еще сталкивался с этим?Буду благодарен за любой совет.