Представляем Monad, новую командную строку MSH (Часть 2)
Это вторая статья из цикла о Monad - новой командной строке от Microsoft. Первую можно найти
Команда переводчиков TheVista.ru приносит свои извинения за большой перерыв между выходом статей.
Так как наш обзор - это, с позволения сказать, лишь краткая экскурсия в обширный мир новых возможностей Monad, рассмотрим следующее глобальное изменение. Безусловно, это способность MSH работать с произвольными данными как с файловыми системами. Это реально благодаря provider model.
Доступ к реестру как к файловой системе.
Исторически так сложилось, что командные строки были жестко привязаны к файловой системе. Четкая иерархическая структура команд обеспечивала передвижение вниз, вверх и внутри уровней такой системы. Годы показали, что такой способ представления данных эффективен, даже не смотря на проблемы, которые он создает - например, сложность манипулирования данными, разбросанными по различным локациям внутри системы.
Конечно, не всегда было возможным рассматривать файловые системы как организованное дерево информации, хотя сегодня это и кажется абсолютно естественным. Но с наличием пережитков того времени - обилия различных стандартов хранения файлов (FAT, NTFS, CIFS, ISO9660) - помогают справиться современные операционные системы, которые берут всю черную работу на себя, оставляя конечному пользователю только легкость работы с организованной иерархией папок. MSH делает еще один шаг вперед - теперь в виде иерархического дерева будет так же представлен реестр и некоторые другие системы хранения данных ОС. Это должно существенно облегчить многие из ежедневных задач.
В MSH, служба provider формирует виртуальный слой информации, который виден в оболочке в качестве отдельного диска. Теперь, в дополнение к привычным A, C и D вы так же можете видеть диски переменных сред, настроек MSH, ярлыков всевозможных программ и частей реестра.
Давайте посмотрим на настройку программы через реестр на примере всеми любимого блокнота.
Но ведь я всегда считал, что реестр был шагом в сторону от файловых систем...
Служба Provider в MSH - отнюдь не шаг назад. Наоборот, представление хранилища данных в качестве обыкновенно диска дает нам возможность использовать один набор инструментов для управления широким кругом информации, хранящейся в разных местах.
Только представьте: теперь реально написать скрипт, который будет сканировать, находить и изменять по заданной маске не только файлы, но и, например, записи реестра, и для этого не понадобится вносить почти никаких изменений!
Ну и как мне сделать подобное?
Реестр разделен на 5 основных секций, известных как "ульи". Мы рассмотрим два из них, HKEY_LOCAL_MACHINE (часто название сокращается до HKLM), в котором хранятся системные настройки, единые для всех пользователей, и HKEY_CURRENT_USER (HKCU), в котором живут настройки конкретного пользователя.
При запуске, MSH создает два дополнительных виртуальных диска (hkcu: и hklm:), которые обозначают соотв. локации в реестре. Вы можете сразу начать их просматривать:
MSH D:MshScripts> cd hkcu:
MSH D:MshScripts> dir
SKC VC ChildName Property
--- -- --------- --------
2 0 AppEvents {}
0 31 Console {ColorTable00, ColorTable01,
ColorTab...
23 1 Control Panel {Opened}
0 3 Environment {MSHCOMMANDPATH, TEMP, TMP}
1 6 Identities {Identity Ordinal, Migrated5, Last
Us...
2 0 Keyboard Layout {}
0 0 Network {}
1 0 Printers {}
5 0 Software {}
0 0 UNICODE Program Groups {}
0 1 SessionInformation {ProgramCount}
0 7 Volatile Environment {LOGONSERVER, CLIENTNAME, SESSIONNAME...
Нетрудно увидеть связь между этими данными и иерархией данных в программе regedit.exe (см. рисунок 1-1).
Рисунок 1-1. Regedit.exe
Блокнот хранит индивидуальные настройки пользователя в HKCU, в разделе SoftwareMicrosoft. Попробуем использовать cmdlet (см. первую статью цикла) get-property чтобы просмотреть содержимое раздела.
MSH D:MshScripts> cd hkcu:SoftwareMicrosoftNotepad
MSH D:MshScripts> get-property .
lfEscapement : 0
lfOrientation : 0
lfWeight : 400
lfItalic : 0
lfUnderline : 0
lfStrikeOut : 0
lfCharSet : 0
lfOutPrecision : 1
lfClipPrecision : 2
lfQuality : 2
lfPitchAndFamily : 49
iPointSize : 100
fWrap : 0
StatusBar : 0
fSaveWindowPositions : 0
lfFaceName : Lucida Console
szHeader : &f
szTrailer : Page &p
iMarginTop : 1000
iMarginBottom : 1000
iMarginLeft : 750
iMarginRight : 750
fMLE_is_broken : 0
iWindowPosX : 88
iWindowPosY : 88
iWindowPosDX : 600
iWindowPosDY : 411
Вернемся в regedit.exe и отметим, что полученный нами результат полностью идентичен по содержанию тому, что дает эта программа. Блокнот использует ключ IfFaceName для хранения используемого шрифта. Воспользуемся cmdlet set-property чтобы поменять это значение на Verdana:
MSH D:MshScripts> set-property . -property lfFaceName -value "Verdana"
Теперь при запуске Блокнот будет отображать текст именно этим шрифтом (см. рисунок 1-2).
Рисунок 1-2.
А как насчет...
...Использования такого подхода для настройки других приложений? Это зависит от того, в какой форме программа хранит настройки - XML-файл, INI-файл, реестр или иными способами.
На этом месте логичными будут вопросы "Но ведь есть же и другие средства для этого?" и "А как насчет Group Policy и SMS?". Действительно, платформа Windows предоставляет множество инструментов для управления приложениями, и MSH отнюдь не является их заменой, наоборот, новая командная строка как бы готовит плацдарм для более глубокой настройки индивидуальных программ, позволяя в короткие сроки исследовать систему. Group Policy и SMS незаменимы для выполнения автоматизированных задач в крупных сетях, тогда как MSH - средство повседневного администрирования.
Где я могу узнать больше?
Реестр Windows подробным образом описан на
В следующей статье мы расскажем о создании "трубопровода" (pipeline) для передачи данных.
Источник:
Перевод: swissglide
По теме
- Параллельная реальность: Windows 8 на Mac
- Обзор Parallels Desktop Upgrade for Windows 7
- Автоматизация резервного копирования данных с помощью CloudBerry Backup
- Обзор Exchange 2010 Beta
- Новые возможности DirectX 11: динамическое подключение шейдеров и сжатие текстур
- Новые возможности DirectX 11: многопоточный рендеринг
- Новые возможности DirectX 11: вычислительный шейдер
- Новые возможности DirectX 11: тесселяция
- Новые возможности DirectX 11: новый конвейер
- 10 футуристических UI