Работа с системния регистър на Windows от приложения на Delphi

Регистърът е просто база данни, която приложение може да използва за съхраняване и извличане на конфигурация информация (размер и позиция на последния прозорец, потребителски опции и информация или друга конфигурация данни). Регистърът съдържа също информация за Windows (95/98 / NT) и за вашата конфигурация на Windows.

"Базата данни" в системния регистър се съхранява като двоичен файл. За да го намерите, изпълнете regedit.exe (помощна програма за редактор на системния регистър на Windows) във вашата директория на Windows. Ще видите, че информацията в Регистъра е организирана по подобен начин Windows Explorer. Можем да използваме regedit.exe, за да прегледаме информацията в регистъра, да я променим или да добавим някаква информация към нея. Очевидно е, че промените в базата данни на системния регистър могат да доведат до срив в системата (разбира се, ако не знаете какво правите).

Вероятно е много добре известно, че в дните на Windows 3.xx INI файловете са били популярен начин за съхраняване на информация за приложенията и други настройки, конфигурирани от потребителя. Най-ужасяващият аспект на INI файловете е, че те са само текстови файлове, които потребителят може лесно да редактира (промени или дори да ги изтрие). В 32-битовия Windows Microsoft препоръчва използването на Registry за съхранение на типа информация, която обикновено бихте поставили в INI файлове (потребителите са по-малко вероятно да променят записи в регистъра).

instagram viewer

Delphi осигурява пълна поддръжка за промяна на записи в системния регистър на Windows: чрез клас TRegIniFile (същият основен интерфейс като TIniFile клас за потребители на INI файлове с Delphi 1.0) и клас TRegistry (обвивка от ниско ниво за системния регистър на Windows и функции, които работят в системния регистър).

Както бе споменато по-горе в тази статия, основните операции в системния регистър (използвайки манипулиране на кода) са четене на информация от Registry и записване на информация в базата данни.

Следващото парче код ще промени тапета на Windows и ще деактивира скрийнсейвъра, използвайки клас TRegistry. Преди да можем да използваме TRegistry, трябва да добавим регистърната единица към клаузата за употреба в горната част на изходния код.

~~~~~~~~~~~~~~~~~~~~~~~~~
използва регистър;
процедура TForm1.FormCreate (подател: TObject);
Var
reg: TRegistry;
започвам
рег: = TRegistry. Създаване;
с reg наистина започват
опитвам
ако OpenKey ('\ Контролен панел \ десктоп', Грешно), тогава започнете
// сменете тапета и го оближете
рег. WriteString ('Wallpaper', 'c: \ windows \ CIRCLES.bmp');
рег. WriteString ('TileWallpaper', '1');
// деактивиране на скрийнсейвъра // ('0' = деактивиране, '1' = разрешаване)
рег. WriteString ('ScreenSaveActive', '0');
// актуализирайте промените незабавно
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, нула, SPIF_SENDWININICHANGE);
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 0, nil, SPIF_SENDWININICHANGE);
край
накрая
рег. Безплатно;
край;
край;
край;
~~~~~~~~~~~~~~~~~~~~~~~~~

Тези два реда код, които започват с SystemParametersInfo... принудете Windows незабавно да актуализира информацията за тапета и скрийнсейвъра. Когато стартирате приложението си, ще видите тапета на Windows растерна графика променете изображението Circles.bmp - тоест, ако в директорията на Windows имате изображение на circle.bmp. (Забележка: вашата екранна защита е деактивирана.)