2012-06-17 5 views
5

При запуске стандартного установочного диска Windows 7 в режиме восстановления, если вы откроете командную строку и запустите специальное приложение, вы получите недопустимую подсистему ошибки. Я попытался связать с/SUBSYSTEM: CONSOLE, WINDOWS и NATIVE, ни одна из них не работает.Какая подсистема Windows поддерживается на диске восстановления

У меня было небольшое затруднение с таблицей разделов (и, возможно, вы обнаружили ошибку или, по крайней мере, «глупое» поведение от менеджера разделов, включенного в окна), и поэтому написал утилиту для ее исправления. Моя программа использует «Windows.h» для импорта , однако в случае необходимости я могу использовать только стандартный C++ (или даже стандартный C) без заголовков, специфичных для Windows.

Что нужно сделать, чтобы запустить приложение?

+1

Какой компилятор вы используете? Является ли это воспроизводимым с помощью простой программы Hello World, или возникает проблема при использовании CreateFile? Каков вывод 'objdump -p' в вашей программе w.r.t. «Подсистема»? http://old.nabble.com/Finding-an-executable's-Windows-subsystem-td22897545.html – HostileFork

+0

Используя Visual Studio 2010, C++ (используя статическое время выполнения), когда я получаю шанс через час, я попытаюсь использовать пустую проект, а затем только с printf. – James

ответ

5

Среда восстановления Windows является надстройкой среды предустановки Windows.

Windows PE - это урезанная версия окон, в которой отсутствует множество подсистем, включая WoW (Windows на Windows).

Это означает, что 32-разрядные исполняемые файлы (или что-либо с 32-разрядным компонентом) НЕ ПРОПУСТУТ на 64-битном диске Windows PE. (Обратите внимание, что WinPE 32 не может установить/восстановить 64-битные системы и наоборот).

Решение моей проблемы состояло в том, чтобы скомпилировать 64-битный код - описательное сообщение об ошибке было бы хорошо Microsoft: |

Найдено после долгих поисков: http://technet.microsoft.com/en-us/library/cc766093(v=ws.10).aspx

+0

Я отмечу это как ответ через 2 дня (когда это позволит мне) – James

0

Вы используете C++ CRT в любом случае? Я не думаю, что это поддерживается. Я даже сомневаюсь, что подходит CreateFile; и посмотрите на NtCreateFile.

+0

Ну, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Я не мог ничего понять через Google, но, возможно, печатал не то. – James

+1

Вы думаете о собственной среде выполнения (http://technet.microsoft.com/en-us/sysinternals/bb897447.aspx). К счастью, режим восстановления и Windows PE запускаются в Win32, только с некоторыми удаленными компонентами. – BCran

Смежные вопросы