Почему CreateProcess () не работает? - PullRequest
2 голосов
/ 20 июня 2011

У меня есть программа, которая пытается перезапустить Explorer в Windows 7;сначала он завершает процесс, затем запускает его снова.

Простой?

Так это выглядит - похоже, это действительно работает.Однако я заметил кое-что забавное: Когда я пытаюсь запустить программу (скажем, Powertoy Calculator XP) в режиме совместимости , она больше не работает! Ничего не происходит - процесссоздан и сразу же завершается.

Если я запускаю Explorer через диалоговое окно «Выполнить» диспетчера задач, программа работает нормально.

Что происходит?:

  • Тот факт, что он был 32-разрядным с отключенным перенаправлением WOW64, не имел значения.Я сделал его 64-битным, и проблема была та же.
  • Я пытался ShellExecute, но он тоже не работал.

Редактировать 2:

Тот же самый точный код просто работал у меня пару раз, а затем перестал работать ... а?

1 Ответ

0 голосов
/ 22 июня 2011

На самом деле это не ответ на вопрос «почему», но мне удалось выяснить , как исправить это самостоятельно:

Вместо копирования переменных среды из текущего процесса,если я скопирую их с помощью CreateEnvironmentBlock, то это сработает.

Я до сих пор не выяснил, что его вызывает, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...