Windows защищает себя от поведения, которое вы пытаетесь закодировать, запуская экранную заставку в объекте задания , который предотвращает "выход" любого процесса из задания. Таким образом, заставка не может оставлять запущенные процессы, когда пользователь этого не ожидает. Windows либо завершит задание (и, следовательно, все процессы, запущенные в нем), когда завершится процесс экранной заставки (WinXP), или дождется завершения самого объекта задания (т. Е. Завершится каждый процесс в задании).
Непонятно, почему вы используете для этого заставку. Вероятно, я бы использовал программу, которая запускается при запуске, или службу, чтобы сделать что-то подобное.
Независимо от того, если вам нужно использовать заставку, вы должны найти способ создать процесс за пределами вашего рабочего объекта. Следует учитывать один метод Create класса Win32_Process .
Исходя из того, что вы хотите перезапустить Firefox, похоже, что у вас есть приложение типа интернет-киоска, в котором вы хотите перезапустить браузер, когда пользователь покинул киоск. В этом случае я бы порекомендовал что-то еще:
Создайте программу, которая запускает Firefox, ждет его завершения, а затем перезапускает, все работает в бесконечном цикле. Запустите эту программу, используя какой-нибудь механизм, похожий на автозапуск.
Заставка заставит вас просто убить Firefox и выйти. Когда заставка активируется, она убивает Firefox и завершает работу, вызывая перезапуск программы зацикливания.