Обратите внимание: запуск самозапускающихся файлов bat может быть полезен, но если вы не знаете, что делаете, они могут нанести всевозможные разрушения. Это особенно важно, если вы запускаете их при запуске. Вы были предупреждены.
В любом случае. Я только что вспомнил кое-что из моих 286 дней, когда я много играл с BAT-файлами. Если вы напишите файл
yourprogram.exe
some other event
BAT-файл запустит вашу программу, а затем приостановит работу и подождет в фоновом режиме, пока программа не закроется. После этого будет запущено «какое-то другое событие». Раньше это раздражало, если вы хотели запускать несколько вещей одновременно, но здесь это действительно полезно. Используя это, можно заставить его запустить цикл, который перезапускает программу (и повторно запускает файл bat), как только он выходит. Объедините это с https://superuser.com/questions/62525/run-a-completly-hidden-batch-file,, и вы даже никогда не увидите, что это происходит.
Окончательный BAT-файл (в данном примере «restart.bat») будет выглядеть примерно так:
c:\[location]\yourprogram.exe
wscript "C:\[location]\invisible.vbs" "C:\[location]\restart.bat"
Вот и все. Запустите программу (при запуске через задачу или даже из папки автозагрузки) со строки 2, и это должно решить вашу проблему:)
О, если вы хотите остановить цикл, просто переименуйте файл bat или поставьте «//» перед двумя строками, сохраните его и выйдите из программы.
Если программе, которую вы запускаете, требуются права администратора, решение, которое я нашел, было использовать psexec (http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx) для запуска как программы, так и bat с повышенными привилегиями. В этом случае BAT будет выглядеть так:
c:\[location]\psexec -h c:\[location]\yourprogram.exe
c:\[location]\psexec -h wscript "C:\[location]\invisible.vbs" "C:\[location]\restart.bat"
Затем вы запускаете bat как администратор или запускаете вторую строку (без части psexec) из планировщика задач с повышенными привилегиями. ВНИМАНИЕ: запуск его как обычного пользователя и нажатие «нет» в приглашении UAC дало мне BSOD, возможно потому, что он зациклился «не может запустить программу из-за отсутствия привилегий» пару миллиардов раз или что-то в этом роде:)