Перезапустить приложение с правами доступа с помощью системной функции? - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь создать функциональность программы, написанной на C ++, чтобы перезапустить себя. Для этого я создаю командный файл, который убивает запущенный процесс и запускает его снова. Поэтому, когда программа должна перезапуститься, она вызывает системную функцию для запуска этого .bat-файла.

Он отлично работает в моей локальной тестовой среде, но производственная среда, в которой должна запускаться эта программа, - Windows Server 2012. В производственной среде, когда я запускаю файл .bat вручную (двойной щелчок по файлу .bat), он отлично работает - запущенная программа убивается и затем запускается снова. Проблема в том, что когда программа вызывает системную функцию для запуска .bat, процесс завершается нормально, но при повторном запуске возникает много ошибок из программы (эта программа работает как сервер TCP - который не может начать «слушай» в этом случае).

Код в программе для запуска летучей мыши следующий:

system("restartGS.bat");

Содержимое летучей мыши следующее:

taskkill /F /IM GameServer.exe
START GameServer.exe

Как подсказал @Gerhard Barnard в комментариях, я попытался удалить / F TaskKill и команду запуска, как следует (что дает точно такую ​​же проблему):

taskkill /IM GameServer.exe && GameServer.exe

Это общая проблема, связанная с используемой здесь логикой? Что я мог сделать, чтобы попытаться решить эту проблему?

Заранее спасибо.

...