
regedit открывает редактор реестра. Программу, которая показывает, куда процесс обращается к реестру и файлам, в уроке называют Process Monitor.Полный текст первых минут лекции «Знакомство с Registry» из видеокурса PracticU – субтитры с временной меткой для каждого абзаца. Так можно прочитать и найти нужные темы ещё до начала обучения.
Добро пожаловать на урок о Registry. Мы узнаем, что это такое, зачем нужно, и вообще, как мыслят программисты, и зачем они эту штуку выдумали, и с чего вытекает эта потребность.
Итак, Registry — это централизованное хранилище настроек. До Registry все значения настроек хранились в файлах конфигурации.
Как правило, это были текстовые файлы. Но потом место для хранения значений настроек стало централизованным. мы всегда можем войти в Registry с помощью программы regedit.
Мы можем просто написать regedit, но сама программа хранится в C Windows System32, и тут есть программа, которая называется regedit.exe.
Маленькая, идущая в комплекте с Windows-ом программка, которая даёт нам доступ в это централизованное хранилище настроек, куда большинство программ записывают значения своих настроек.
Вот так вот выглядит Registry с точки зрения программы regedit. Вот, registry поделен на пять категорий, о которых мы поговорим.
И мы можем тут поглазеть на все настройки. Например, control panel какого-то пользователя, его десктоп, всяческие настройки, относящиеся к его рабочему столу, к примеру.
Например, какой фон у него на рабочем столе, какой wallpaper. Вот, файл вот этой вот картинки используется как фон у некоторого пользователя.
Вот такой вот пример, где лежит фоновый рисунок. jpg-файл. Давайте убедимся, что это действительно актуально.
Вот, запомните этот фон. А теперь давайте посмотрим, что лежит по тому пути, который в registry. Да, та же самая картинка. Сейчас это файл.
Давайте перейдём к папке, где лежит этот файл. Вот она эта папка и этот файл в ней. Вы поняли, да, как я узнал, где это лежит? Я проверил в registry.
Посмотрел настройку в registry. Я зашёл в registry и нашёл настройку, соответствующую фоноэкрана. в фон у рабочего стола. И вот мы уже начинаем чуть-чуть понимать, что такое registry.
А теперь давайте вообразим, что мы программисты, и напишем что-нибудь в registry от лица программиста. Напишем простенькую программку, которая пишет в registry.
По программированию у нас есть отдельный курс, целый курс. Поэтому сейчас в само по себе программирование я не буду углубляться.
Буду сам код объяснять бегло. Мы просто поймём, как программисты мыслят. Для этой цели мы используем Visual Studio. Это майкрософтовский продукт, и есть бесплатная версия.
Версия экспресс, она бесплатна. Я уже её тут скачал, но вы можете легко её найти через поисковик. Эту студию можно скачать с майкрософтовского сайта.
Давайте же откроем Visual Studio. Есть версия 2012, 2013, есть разные версии. У меня тут где-то уже есть открытое Visual Studio.
Где она тут у меня? Вот, вот Visual Studio открыто. Давайте сделаем новый проект. Я объясняю бегло, потому что сейчас мы не учим программирование.
Я выбираю язык C#, выбираю язык и тип программы. Программы командной строки, я хочу DLL или Windows-аппликацию. Пусть будет аппликация для Windows по имени Practicue Test Application.
Допустим, такое имя я хочу. И сразу же мы получаем окно нашей аппликации. Мы даже можем всё это сразу запустить, нажав Start.
Уже мы получим окно. Впрочем, пустое окно, но уже работающее. Это самая настоящая программа, которая работает сейчас. Смотрите, я всё закрою.
Это самостоятельная программа, которая уже работает. Итак, мы начали новый пустой проект. А теперь добавим в окно кнопку. Я перетаскиваю в окно кнопку.
И ещё метку я хочу добавить в наше окно. Перетаскиваю метку. На кнопке у меня будет, допустим, написано «клик». А метка будет содержать число о том, сколько раз нажата кнопка.
Начальная надпись 0. Вот такая вот у нас будет программа. Мы жмём кнопку, и отображается, сколько раз мы её нажали. Двойной клик на кнопке, и мы в коде, который с ней связан.
Ещё раз отсылаю всех интересующихся к нашему курсу программирования. Я ввожу переменную i, которая изначально будет иметь значение 0, и которая будет повышаться при нажатии кнопки.
Когда кто-то нажмёт на кнопку, то текст у метки label 0 пусть станет равен значению в переменной i. Изначально i у нас равен нулю, и я пишу i++.
Это значит повысить i на единицу. Вот и готово. Простенькая программка, которая считает, сколько раз мы нажали на кнопку. Теперь же давайте её запустим.
Вы поняли? Я повторю. Изначально i равно нулю, и повышается на единицу. ++ — это добавить единицу. И текст метки становится новым значением i.
А теперь запустим нашу программу. Понажимаем вдоволь на кнопочку «клик». Сколько раз я нажму, таково и будет значение счётчика.
Но это только основа той программки, которую я хотел написать. Всё это я делаю для того, чтобы у меня появилась надобность сохранять какие-то данные или настройки.
Например, я хочу сохранять, сколько раз мы нажали на эту кнопку в Registry. К примеру, я хочу сохранять, сколько раз при последнем запуске программы мы нажали на кнопку «Клик», только при последнем запуске аппликации.
Ведь поймите, представьте, что кто-то выключит мою программу, и все мои данные, в моем случае это только переменная i, забудутся.
Когда программа выключается, вся ее оперативная память освобождается, там забываются все значения. И каждый раз, когда я запускаю программу, она начинает с нуля.
Сейчас i помнит, что он 8, 9 или 10. Он помнит значение 10, но если я выключу программу и запущу заново, то старое значение i пропадает. I пропадает.
Но я, допустим, этого не хочу, я хочу сохранить его. Допустим, это программа, которая что-то считает, и очень важно сохранять это значение.
И эту информацию я могу сохранить на жестком диске в виде файла, относящегося к моей программе.
Это принято делать в папке Program Files. И в Program Files должна быть папка, которая относится к моей компании-производителю программного обеспечения.
Допустим, моя такая компания называется Practicure. И у компании Practicure есть несколько товаров, Поэтому в папке Program Files Practicue мы делаем по папке на каждый продукт.
Тут будут файлы моей первой аппликации. А ещё, допустим, у нас есть ещё одна аппликация, ещё один продукт. Допустим, она у нас показывает фильмы.
Допустим, она называется Full Movies Viewer. Итак, наша компания выпустила аппликацию для просмотра фильмов и ещё одну. У моей компании есть разные продукты.
Итак, на диске C Program Files. Каждая компания-производитель программного обеспечения тут создаёт свою папку. и внутри такой папки принято открывать еще по одной папке на каждый продукт, хотя есть такие компании, как и Microsoft, которые открывают несколько папок в папке Program Files, хотя так не принято.
Но, как видите, так тоже делают. Например, Oracle — это компания, производитель программного обеспечения. И, например, продукт у этой компании — это VirtualBox, известная вам по нашим фильмам программа виртуализации.
И все относящееся к этой программе находится в этой папке. Вот тут весь код этой программы. Если я сотру отсюда файлы, то программа пропадет, ее не будет.
В общем, все относящееся к каждой программе находится в двух местах. Во-первых, это в Program Files, если вы не меняете путь, куда она предлагает установиться.
А второе место, где находится нечто, относящееся к программе — это Registry. И давайте для примера представим, что наша программа просмотра фильмов.
Хочет запоминать, какой мы видели последний фильм, на какой минуте остановились. И она, допустим, хочет это запоминать в текстовом файле конфигурации.
Давайте создадим такой файл. Запустим Notepad от имени администратора, чтобы был доступ в Program Files. И, допустим, данные конфигурации у меня будут такие:
последний просмотренный фильм, 84-й. Допустим, каждый раз, когда мы открываем нашу программу заново, она ставит следующий по номеру фильм, который мы ещё не посмотрели.
И для этого она должна помнить, что мы посмотрели, и на какой минуте мы прервались, чтобы начать с той же минуты. Допустим, это программа просмотра сериалов.
И, допустим, на 13-й минуте нас последняя серия этого сериала занадоела. И программа сохранила это, чтобы потом продолжить ровно с того места, где нас занадоело.
Давайте положим этот файл конфигурации куда нужно. Создадим его туда, где, допустим, у нас его читает и меняет наша программа. Допустим, у этой программы этот файл называется settings.ini.
Файлы конфигурации часто бывают ини. Например, в Linux или в Android программы держат свои данные, которые нужно долго помнить, именно в файлах.
И поэтому программу можно переписать со всеми её настройками, с компьютера на компьютер. Вот так вот хранятся значения настроек в файле конфигурации.
Но затем Microsoft придумали registry — централизованное место для хранения всех настроек. И в те времена, если мы хотели сделать резервную копию, то нам уже не требовалось делать резервную копию всего жесткого диска, как мы делаем сегодня.
Но тогда были недостатки с местом для резервных копий. Были такие дискетки менее чем полтора мегабайта.
И в те времена, когда мы хотели сделать резервную копию, мы сохраняли только данные программ. И нам уже не надо было искать в каждой папке программ, где именно у неё файлы конфигурации.
Нет же, мы делали резервную копию только registry, стандартного места для всех хранений настроек. Общее соглашение гласит, что там все настройки.
И мы просто сохраняли наше положение в registry и таким образом сохраняли все данные компьютера. а все программы можно заново установить и вернуть данные registry.
А теперь смотрите, где лежит на жёстком диске registry. Он хранится в нескольких файлах. Эти файлы лежат в c Windows System, System32.config.
Вот, вот они, файлы, где хранится registry, когда мы выключаем наш компьютер. И мы ещё разберём, что именно хранится в каждом из них.
И ещё есть в профиле пользователя тоже такие файлы. И вы видите, что все эти файлы registry занимают незначительное место по сравнению со всем жёстким диском.
И поэтому в те времена, когда был изобретён registry, это было спасением. Это позволяло эффективно делать резервное копирование компьютера.
Уже не нужно было копировать весь жёсткий диск. Далее, как мы в программе говорим, что мы хотим хранить значения своих настроек не в каком-то файле конфигурации, который относится лично к нашей программе, а в общем registry.
Для этого программист пишет такого рода строчки. Он объявляет вот такую вот переменную key. Давайте объявим эту переменную здесь,