Я пишу приложение на C #, которое должно работать как служба, но также иметь взаимодействие с пользователем. Я понимаю, что сервисы не имеют пользовательского интерфейса и т. Д., Поэтому я разделил свою программу на приложение Windows Form и сервис, который может взаимодействовать друг с другом.
Проблема, с которой я столкнулся, заключается в том, что мне нужен сервис, чтобы убедиться, что приложение Windows Form всегда запущено, и перезапустите его, если это не так. Я могу определить, работает ли он, и перезапустить его с помощью следующего кода в Windows 2000 / XP:
System.Diagnostics.Process.Start("ExePath");
но в Vista он запускает новый процесс как локальный / системный процесс, который невидим для пользователя. Кто-нибудь обходит это? Есть ли какой-нибудь способ определить, какой пользователь в данный момент вошел в систему, и запустить новый процесс от имени этого пользователя? Мне не нужно учитывать быстрое переключение пользователей на этом этапе. Достаточно чего-то - чего угодно - базового.
Буду признателен за любую помощь или советы, которые у вас есть по этому вопросу.
Мне нужно уточнить, что я устанавливаю параметр «Разрешить службе взаимодействовать с рабочим столом», когда служба установлена. Это то, что позволяет ему работать на 2000 / XP. Тем не менее, Vista все еще имеет вышеупомянутую проблему.