У меня есть служба C#, которая использует FileSystemWatcher и вызывает связанные команды (например, пакетные файлы). Один из пакетных файлов должен убить запущенную программу, скопировать некоторые файлы и снова запустить программу. Taskkill используется, чтобы избавиться от программы.Службы Windows C# для запуска taskkill.exe
Вызывается пакетный файл, но команда taskkill никогда не убивает процесс (например, notepad.exe, который пользователь открыл). Один и тот же командный файл работает, если я просто запустил его, когда я зарегистрировался как этот пользователь.
Я попробовал запустить службу как зарегистрированную учетную запись пользователя (тот же, у которой открыт блокнот), но безрезультатно - по умолчанию используется локальная система.
Я не могу жестко указать имя пользователя (я думаю, однако, о конфигурации для олицетворения, но немного неохотно хранить пароли пользователей).
Любые предложения?
можете ли вы отлаживать, чтобы узнать, что вы получаете? это бросает какую-то ошибку/исключение? – Microtechie
Не могу сказать, работает как локальная система. Я попытался выполнить вывод строки следующим образом: taskkill/IM notepad.exe> C: \ Users \ user \ Desktop \ testoutput.txt - файл создан, но он пуст. Если я запустил команду, дважды щелкнув командный файл, выдается следующий вывод: УСПЕХ: Отправил сигнал завершения процесса «notepad.exe» с PID XXXX. - для каждой из исполняемых блокнотов. – zaitsman
Я не думаю, что сбой в пакетном скрипте вызовет исключение. –