Native shell — командная строка для экспериментов с native режимом Windows
Native shell — программа, написанная мной для экспериментов в Native-режиме Windows семейства NT (NT/2000/XP/2003/Vista/7). Этот тот режим, в котором запускается утилита chkdsk, когда ей надо проверить и исправить ошибки в системном разделе. Сам режим (его ещё называют загрузочным режимом) представляет собой синий экран (в Windows XP синий, в других версиях другого цвета), который появляется до появления окна логина в систему. Выглядит этот режим так (нажмите картинку, чтобы увеличить):
Программа распространяется на условиях лицензии GNU General Public License, часть исходников по GNU Lesser General Public License. Упоминания о других авторах исходного кода смотрите в исходных текстах программы. Исходные коды доступны по адресу
Программа представляет собой шелл, то есть командную строку. В ней можно выполнять несколько базовых операций с файлами и каталогами Windows.
Особенность режима заключается в том, что вход в систему ещё не произошёл, а у нас уже есть доступ ко всей файловой системе и реестру.
Всё это реализуется посредством вызовов функций Native API из ntdll.dll
. Многие ограничения Windows, таким образом, ещё не действуют, пока
мы находимся в этом режиме. Кое-что о программировании native приложений я написал здесь.
Запуск программы протестирован в Windows XP и ReactOS.
Возможности программы
- Запускать другие native процессы и передавать им параметры командной строки
- Читать клавиатурный ввод и реагировать на команды. Список команд выводится по команде
help
. - Перемещаться по файловой системе с сохранением текущего каталога.
- Копировать, удалять и перемещать файлы.
- Создавать каталоги.
- Выключать и перезагружать компьютер.
- Выводить список запущенных процессов.
- Выводить список запущенных исполняемых модулей в памяти.
- Выводить список устройств в системе.
- Выводить список файлов в каталоге на экран. При этом показываются имя файла, короткое имя (в формате 8.3), размер и признак каталога. Если в папке много файлов, то программа выводит список файлов страницами. Перейти к другой странице или отказаться от этого можно клавишами Y/N.
- Выходить из native режима и переходить к нормальному запуску Windows.
Отсутствующие возможности
- Работа с реестром
- Автодополнение команд
- История ввода команд
История версий
- 0.12 — добавлена команда перемещения или переименования файла (move), исправлен малый размер буфера текущей строки символов на экране; переход с диска на диск вроде бы должен теперь работать.
- 0.11 — программа переписана на основе исходников Native Command Line Interface (NCLI) из проекта TinyKRNL. За основу взята версия 2006 года. Изменения по сравнению с NCLI: обработка клавиатурного ввода заменена на вариант из библиотеки ZenWINX; добавлены все команды из предыдущих версий Native shell, формат времени при выводе содержимого каталога изменён с 12-часового на 24-часовой; добавлен постраничный вывод содержимого каталога (в NCLI был непрерывный вывод). Изменения по сравнению с Native shell: добавлены команды из NCLI; переписаны некоторые файловые операции, процессы могут запускаться с передачей параметров командной строки, изменены имена некоторых команд. Ограничения: пока не работает переход на другой диск (например с C:\ на D:\).
- 0.02 — упрощена инициализация клавиатуры (убрана поддержка одновременной обработки нескольких клавиатур), добавлена возможность запускать другие native процессы (пока без передачи им командной строки).
- 0.01 — начальная версия.
Список консольных команд
Постепенно будут добавляться команды, которые будут реализовывать те или иные функции, которые я хотел бы опробовать в Native-режиме. Если аргумент команды содержит пробел, его надо брать в кавычки (кроме команды cd, она понимает пути без кавычек).
- если команда не совпадает с одной из описанных ниже, считается, что это имя исполняемого файла для запуска (чтобы программа запустилась, имя исполняемого файла нужно указывать обязательно вместе с расширением)
- cd X - сменить каталог на X
- md X - создать каталог X
- copy X Y - копировать файл X в Y
- move X Y - перенести или переименовать файл X в Y
- poweroff - выключить ПК
- shutdown - выключить ПК
- dir - показать содержимое каталога
- pwd - напечатать название текущего каталога
- del X - удалить файл X
- reboot - перезагрузить ПК
- devtree - вывести дерево процессов
- exit - выход в Windows
- sysinfo - показать информацию о системе
- lm - показать исполняемые модули в памяти
- vid - проверка вывода символов на экран
- lp - вывод запущенных процессов
Скачать исходный код и исполняемый файл программы Native shell
Исходный код на языке Си. Для сборки нужен WinDDK и заголовочные файлы NTNDK. Частично используется
код из библиотеки ZenWINX. Архив также содержит исполняемый файл native.exe
.
Файлы install.cmd, uninstall.cmd, add.reg, remove.reg
помогут установить и удалить приложение.
- Версия 0.12 - скачать RAR-архив (36 Кб)
- Версия 0.11 - скачать RAR-архив (32 Кб)
- Версия 0.02 - скачать RAR-архив (55 Кб)
- Версия 0.01 - скачать RAR-архив (61 Кб)
- Страница Native Shell на github
Избранное
Остальное
По вопросам сотрудничества и другим вопросам по работе сайта пишите на cleogroup[собака]yandex.ru