C/C++|Example|Программа для восстановления загрузчиков Windows Vista и Windows 7
Данная программа представляет собой GUI оболочку над системными утилитами BootSect и BcdEdit.
Прямая ссылка на исходник -> http://www.topsoftzone.ru/files_soft...tiboot_src.zip FAQ Q. Как скомпилировать? A. Я использовал Microsoft 32-bit C/C++ Optimizing Compiler версии 15.00.30729.01 входящий в Microsoft Visual С++ 2008 Express Edition. cl MultiBoot.cpp Kernel32.lib User32.lib Shell32.lib Gdi32.lib Comdlg32.lib ComCtl32.lib Version.lib AdvApi32.lib /D "_UNICODE" /D "UNICODE" /link /subsystem:windows Требуется так же наличие Microsoft SDK. Например последний - Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 на конкретную платформу (x86, x64, IA64). Опционально можно добавить ещё ключи /MERGE:.rdata=.text /SECTION:.text,EWR Компилировал именно с консоли (Пуск->Программы->Visual C++ 9.0 Express Edition->Visual Studio Tools->Visual Studio 2008 Command Prompt) Так как не хотелось навязывать "Распространяемый пакет Microsoft Visual C++" (Microsoft Visual C++ Redistributable Package). Если известно где в среде отключается данная зависимость, то прошу об этом сообщить в теме Visual C++ 9.0 и C++Builder 2007 - программы на голой винде (без .NET и тд) Для компиляции так же годится Visual C++ Toolkit 2003 и Visual C++ 2005 Express Edition Q. Так может где-то есть бинарник? A. Да есть http://soft.oszone.net/program/9336/MultiBoot/ Q. Как добавить ресурсы в выходной файл, как это сделано в бинарнике выше? A. Нужно указать подготовленный ресурс при компиляции. cl MultiBoot.cpp Kernel32.lib User32.lib Shell32.lib Gdi32.lib Comdlg32.lib ComCtl32.lib Version.lib AdvApi32.lib /D "_UNICODE" /D "UNICODE" /link /subsystem:windows MultiBoot.res Q. А как подготовить ресурс файл? A. Для этого в блокноте пишем следующие строки Код:
BootSect.exe RCDATA bootsect.exe В консоли заходим в папку с RC и пишем такую команду rc -r -DWIN32 MultiBoot.rc Если требуется, указываем полный путь к MultiBoot.rc. В результате получаем MultiBoot.res файл. Q. Ну а как быть с манифестом, его ведь тоже можно разместить в ресурсах? A. Да можно, для этого есть специализированная утилита mt (Manifest Tool), входящая в SDK. mt.exe" -manifest MultiBoot_with_res.exe.manifest -outputresource:MultiBoot_with_res.exe;1 В результате манифест разместится в ресурсах. Так же есть возможность разместить и через компилятор ресурсов, для этого пишем или дописываем выше начатый RC файл 1 24 DISCARDABLE MultiBoot.exe.manifest и проделываем действия из ответа выше. Q. Как собрать х64 версию бинарника? A. Алгоритм сбора непосредственно в средстве разработке мне неизвестный. Попробуйте узнать например через тему Компиляция кода в VS 2005 для Win x64 При установленной SDK это можно сделать следующим образом
Q. Где бы ещё что-то почитать по данному коду? Может есть какие-нибудь источники? A. Да, конечно. Вот список руководств по WIN32 (на английском) Forger's Win32 API Tutorials The Winapi (C Win32 API, No MFC) tutorial Damb - Tutorials Пример работы с GetVersion в программу вошёл практически без изменений. Связанная тема Прозрачный STATIC текст Q. Могу ли я использовать код в своих программах? A. Да, конечно. Cпециально для участников и гостей конференции OSZone.net Найдёте баг - дайте знать. Есть предложение, не стесняйтесь. Темы подкатегории Example, предложены участником hasherfrog. Тема построена по аналогии с этой. |
Время: 04:32. |
Время: 04:32.
© OSzone.net 2001-