Чтение онлайн

на главную - закладки

Жанры

Реестр Windows 7

Климов Александр Петрович

Шрифт:
...

ВНИМАНИЕ

Начиная с Windows XP, рекомендуется использовать файлы CMD вместо BAT-файлов. Нужно просто поменять расширение у ваших BAT-файлов.

...

ПРИМЕЧАНИЕ: ДОПОЛНИТЕЛЬНЫЕ ФАЙЛЫ

В папке Ch5 вы можете найти файлы regbackup bat и regbackup cmd.

PowerShell

Все предыдущие сценарии с использованием BAT-, CMD-, WSH-файлов можно считать устаревшими. Компания Microsoft настоятельно рекомендует применять новую технологию Windows PowerShell для автоматизации работ, включая и взаимодействие с реестром. Давайте рассмотрим несколько примеров, позволяющих изучить возможности PowerShell.

Для начала запустим оболочку PowerShell. Для этого наберем в строке поиска меню Пуск текст powershell и нажмем Enter ,

выделив строку Windows PowerShell .

Работа с реестром в PowerShell схожа с работой с файлами на диске. Например, для перехода на ветвь HKEY_CURRENT_USER используется команда cd (также можно использовать команды set-location или ее псевдоним sl ): сd hkcu:

dir

На рис. 5.17 вы можете видеть выполнение этих команд в Windows PowerShell.

Рис. 5.17. Работа с реестром в PowerShell

В данном примере мы перешли в раздел HKEY_CURRENT_USER и вывели его подразделы.

Также мы можем загрузить содержимое всей ветви реестра HKEY_CURRENT_USER в переменную reg:

sl hkcu:

$reg =-gci. –rec –ea silentlycontinue

Здесь используется псевдоним gci для команды get-childitem . Первый аргумент этой команды «.» (точка) указывает на то, что мы хотим получить содержимое текущей ветви реестра – HKEY_CURRENT_USER . Второй аргумент является сокращением от опции –recurse и указывает на то, что нужно рекурсивно пройтись по всем подразделам текущей ветви реестра. И наконец, третий аргумент – – ea silentlycontinue – указывает на то, что команда должна продолжать выполняться даже в случае возникновения ошибок, связанных с недостатком прав доступа к определенным разделам реестра. Теперь мы можем сохранить значение переменной в файле или использовать где-то в сценарии дальше.

Создание нового раздела

Для создания нового раздела используется команда NewItem . Мы уже создавали раздел Test . Давайте теперь создадим раздел Test2:

cd hkcu:

New-Item HKCU:\Software\Test2

Удаление раздела

Удалить раздел из реестра тоже очень просто при помощи команды Remove-Item:

Remove-Item HKCU:\Software\Test2

Переименование раздела

Переименовать раздел можно с помощью команды Rename-Item . В следующем примеры мы снова создаем раздел Test2, а затем сразу его переименовываем в TestPowerShell:

New-Item HKCU:\Software\Test2

Rename-Item HKCU:\Software\Test2 TestPowerShell

Добавление параметров

Итак, мы научились создавать раздел, и теперь самое время узнать, как добавлять в раздел новые параметры. Давайте добавим в созданный нами раздел TestPowerShell строковый параметр CatName со значением Барсик .

New-ItemProperty HKCU:\Software\TestPowerShell -Name CatName -PropertyType string -Value «Барсик»

На рис. 5.18 вы можете видеть результат выполнения команд и состояние реестра.

Рис. 5.18. Результат выполнения команд и реестр

Давайте усложним пример – добавим в наш раздел еще один параметр типа DWORD и выведем все значения параметров:

#-Добавляем еще один параметр – CatAge типа DWORD и значением 8

New ItemProperty -path HKCU:\Software\TestPowerShell -name CatAge -propertyType DWord -value8

#-Получаем список всех параметров

Get-ItemProperty HKCU:\Software\TestPowerShell

Переименование параметров, изменение значений

Продолжаем мучить реестр. Теперь мы поменяем значение одного из параметров, затем переименуем этот параметр и вдобавок удалим другой параметр.

#-Изменим значение параметра CatAge на 7

Set-ItemProperty-HKCU:\Software\TestPowerShell -name CatAge -value 7

#-Изменим название параметра CatAge на ВозрастКота

Rename-ItemProperty – path-HKCU:\Software\TestPowerShell -name CatAge -newname-ВозрастКота

#-Удаляем CatName

Remove-ItemProperty HKCU:\Software\TestPowerShell -name CatName

Название команд и комментарии помогут вам разобраться с примерами.

Программируем на C#

Теперь рассмотрим несколько примеров работы с реестром при помощи языка C#. В состав .NET Framework входит класс Microsoft.Win32.Registry, предназначенный для работы с реестром. При помощи данного класса можно написать очень навороченные твикеры.

Мы обойдемся самым общим примером, чтобы понять основы взаимодействия с реестром. Мы знаем, что для изменения заголовка браузера Internet Explorer используется параметр Windows Title. Вот как выглядит код для изменения заголовка браузера программным путем: using Microsoft.Win32;

private void ChangeIETitle(string Title)

{

RegistryKey newIETitle = Registry.CurrentUser.OpenSubKey(

@"SOFTWARE\Microsoft\Internet Explorer\Main", true);

newIETitle.SetValue(«Window Title», Title);

newIETitle.Close;

}

private void butChangeTitleIE_Click(object sender, EventArgs e)

{

ChangeIETitle(«Мой

суперзаголовок»);

MessageBox.Show(«Закройте IE и запустите его снова»);

}

Рис. 5.19. Internet Explorer с новым заголовком

После повторного запуска браузера вы увидите, что в заголовке окна теперь отображается установленная вами строка, в моем случае выводится строка Мой суперзаголовок (рис. 5.19).

Виртуализация

В предыдущем примере мы записали новое значение реестра в раздел HKEY_CURRENT_USER . Эта разрешенная область для записи новых значений. А что произойдет, если мы попытаемся записать новое значение в раздел HKEY_LOCAL_MACHINE ? В Windows 7 запрещено записывать в данный раздел обычным пользователям и стандартным программам. Давайте напишем простой пример для проверки данного запрета:

private void AddNewValue

{

RegistryKey myKey = Registry.LocalMachine.CreateSubKey(

«SOFTWARE\\Test\\Preferences»,

RegistryKeyPermissionCheck.Default);

try

{

myKey.SetValue(«MyKey», «MyValue»);

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

finally

{

myKey.Close;

} }

private void butVirtualization_Click(object sender, EventArgs e)

{

AddNewValue;

MessageBox.Show(«Новые значения добавлены в реестр»);

}

Если вы запустите пример, то получите сообщение об ошибке. Здесь сработал режим UAC, который вызвал столько недовольных разговоров при выпуске Windows Vista. Большинство пользователей привыкло работать под правами Администратора, что наносило большой вред безопасности системы. Microsoft решила как-то бороться с данным явлением и предложила новую модель UAC, которая получила дальнейшее развитие и в Windows 7. Теперь при попытке обращения к запрещенным областям системы на экране появляется предупреждающее сообщение (рис. 5.20).

Рис. 5.20. Сообщение об ошибке при попытке записи в реестр

На этом оборона системы не заканчивается. Давайте временно отключим контроль UAC, чтобы все-таки сделать запись в выбранном разделе, тем более что многие пользователи так и делают (и совершенно зря). Чтобы не подвергать свой компьютер опасности, мы отключим контроль UAC по-умному. Зайдите в меню Project | Project Properties… и на вкладке Application в области Resources установите у выпадающего списка Manifest значение Create applications without a manifest .Запустите программу снова, и вы уже не получите сообщение об ошибке. Казалось бы, мы решили свою проблему. Но не торопитесь с выводами. Запустите редактор реестра и попробуйте найти раздел Test в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Test . Как ни странно, вы не найдете там вашего раздела. Но почему же программа нормально отработала и не сообщила об ошибке. Все очень просто. На этот раз сработала новая технология Microsoft – виртуализация. Я не стану подробнее останавливаться на этой теме (интересующиеся могут найти документацию самостоятельно), скажу только, что при попытке записать в запрещенную область реестра при отключенным UAC, ваши записи попадают в раздел HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE . Интересно отметить, что программа при этом уверена, что запись производится в нужный раздел. Но на самом деле вы не должны прибегать к подобному трюку. Дело в том, что виртуализация была предложена на переходный период в целях совместимости. Разработчики должны пересмотреть свои программные продукты и внести необходимые изменения. В дальнейшем Microsoft планирует отказаться от виртуализации и заставить программистов писать безопасный код, который не будет наносить вред системе пользователя.

...

ПРИМЕЧАНИЕ: ДОПОЛНИТЕЛЬНЫЕ ФАЙЛЫ

В папке Ch5 вы можете найти файл ChangeIETitle zip, который содержит примеры о смене заголовка окна браузера и виртуализации.

Заключение и благодарности

Мне хотелось бы выразить горячую признательность всем людям, которые писали мне письма с вопросами о реестре. Частенько бывало так, что в поисках ответа на ваши вопросы, я сам узнавал про новые параметры в нем. Иногда некоторые авторы писем сами присылали мне описания параметров для ознакомления. Всем спасибо – вы помогли мне написать книгу.

Поделиться:
Популярные книги

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Наследник павшего дома. Том IV

Вайс Александр
4. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том IV

Вернуть Боярство 11

Мамаев Максим
11. Пепел
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Вернуть Боярство 11

Кодекс Крови. Книга ХIII

Борзых М.
13. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХIII

Кодекс Крови. Книга ХVII

Борзых М.
17. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVII

Трактир «Разбитые надежды»

Свержин Владимир Игоревич
1. Трактир "Разбитые надежды"
Фантастика:
боевая фантастика
7.69
рейтинг книги
Трактир «Разбитые надежды»

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Бывшая жена драконьего военачальника

Найт Алекс
2. Мир Разлома
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бывшая жена драконьего военачальника

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

Идеальный мир для Демонолога 3

Сапфир Олег
3. Демонолог
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Демонолога 3

Отмороженный 13.0

Гарцевич Евгений Александрович
13. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
фэнтези
5.00
рейтинг книги
Отмороженный 13.0

Город Богов 3

Парсиев Дмитрий
3. Профсоюз водителей грузовых драконов
Фантастика:
юмористическое фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Город Богов 3