2012-06-17 78 views
5

在恢復模式下運行標準Windows 7安裝磁盤時,如果打開命令行並運行定製應用程序,您將收到錯誤「不支持子系統」。我嘗試過使用/ SUBSYSTEM:CONSOLE,WINDOWS和NATIVE進行連接,這些都不起作用。恢復磁盤上支持哪個Windows子系統

我在分區表中遇到了一些困難(並且可能發現了一個錯誤,或者至少來自Windows中包含的分區管理器的'愚蠢'行爲),因此編寫了一個實用程序來修復它。我的程序使用'Windows.h'來導入CreateFile,但是如果需要的話,我可以只使用標準C++(甚至標準C)而不使用Windows特定的頭文件。

我需要做些什麼才能讓應用程序運行?

+1

什麼編譯您使用的?這是否可以通過一個簡單的「Hello World」程序重現,或者當您開始使用CreateFile時是否會遇到問題?程序w.r.t上的objdump -p輸出是什麼? 「子系統」? 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是一個精簡版的Windows,缺少許多子系統,包括WoW(Windows在Windows上)。

這意味着32位可執行文件(或具有32位組件的任何內容)將無法在64位Windows PE磁盤上運行。 (請注意,WinPE 32不能安裝/修復64位系統,反之亦然)。

我的問題的解決方案是編譯爲64位代碼 - 描述性錯誤信息本來不錯微軟:

後多搜索找到: http://technet.microsoft.com/en-us/library/cc766093(v=ws.10).aspx

+0

我會在2天內將其標記爲答案(當它讓我) – James

0

您是否以任何方式使用C++ CRT?我不認爲這是支持的。我甚至懷疑CreateFile是合適的;而是查看NtCreateFile

+0

那麼_must_是一個運行時...在恢復控制檯上運行的工具種類繁多,有誰知道我可以找到需求的頁面?我無法通過谷歌任何東西,但可能一直在輸入錯誤的東西。 – James

+1

您正在考慮本機運行時(http://technet.microsoft.com/en-us/sysinternals/bb897447.aspx)。幸運的是恢復模式和Windows PE在Win32中運行,只是刪除了一些組件。 – BCran