Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection 6.doc
Скачиваний:
92
Добавлен:
13.04.2015
Размер:
199 Кб
Скачать
☆

Implementation

//Получить имя установленной программы

procedure GetApplicationName( var List : TStringList ; Key : HKEY;

ObjectName : PChar );

var

hObject : HKEY;

szName : PByte;

szUnStr : PByte;

dwType,

dwBufSize,

dwBufSize1 : DWord;

begin

dwBufSize := MAX_PATH;

dwBufSize1 := MAX_PATH;

GetMem( szName, MAX_PATH + 1 );

GetMem( szUnStr, MAX_PATH + 1 );

if RegOpenKeyEx( Key, ObjectName, 0, KEY_READ, hObject ) = ERROR_SUCCESS then begin

if

( RegQueryValueEx( hObject, 'DisplayName',nil, @dwType, szName, @dwBufSize ) = ERROR_SUCCESS ) and

( RegQueryValueEx( hObject, 'UninstallString',nil, @dwType, szUnStr, @dwBufSize1 ) = ERROR_SUCCESS )

then

List.Add( PChar(szName) );

end;

RegCloseKey( hObject );

Dispose( szName );

Dispose( szUnStr );

end;

//Получить список установленного ПО

procedure GetInstallApplication( var List : TStringList);

var

hUninstall : HKEY;

szObject : PChar;

dwIndex1, dwBufSize : DWord;

begin

GetMem( szObject, MAX_PATH + 1 );

if RegOpenKeyEx( HKEY_LOCAL_MACHINE, PChar(UninstallKey), 0, KEY_READ, hUninstall ) = ERROR_SUCCESS then begin

dwBufSize := MAX_PATH;

dwIndex1 := 0;

while RegEnumKeyEx( hUninstall, dwIndex1, szObject, dwBufSize, nil, nil, nil, nil) = ERROR_SUCCESS do begin

GetApplicationName( List, hUninstall, szObject );

Inc( dwIndex1 );

dwBufSize := MAX_PATH;

end;

RegCloseKey( hUninstall );

end;

Dispose( szObject );

end;

Для модификации (добавления) большого количества данных в реестр можно использовать REG-файлы. Это файлы, о которых упоминалось при описании функции LoadKey. REG-файлы — это простые текстовые ASCII-файлы с информацией о содержи­мом реестра. REG-файл можно создать с использованием программы REGEDIT при помощи пункта меню Export этой программы. Также REG-файл можно создать самостоятельно, при помощи любого текстового редактора. Пример такого файла приводится ниже:

WindowsRegistryEditorVersion5.00

[HKEY_CURRENT_USER\Software\MyProgram\1.0]

[HKEY_CURRENT_USER\Software\MyProgram\1.0\Current]

"Parametr1"=dword:00000001

[HKEY_CURRENT_USER\Software\MyProgram\1.0\Current\Start]

"ProgramStart"=hex:00,00,00,00

"DefaultPath"="C:\\Program Files\\MyProgram"

@="C:\\Program Files\\MyProgram\\Database"

Такой REG-файл можно использовать для внесения информации в реестр при помощи функции LoadKey или путем запуска этого файла из программы Windows Explorer.

В первой строке файла содержится строка, которая указывает на версию программы REGEDIT, при помощи которой был создан дан­ный файл. При создании собственного REG-файла при помощи текстового редак­тора, необходимо поместить это ключевое слово в начале файла. Структура файла следующая. После первой строки размещается имя ключа в квадратных скобках, затем можно разместить одну или несколько пар имя/значение. Знак @ обозначает значение ключа по умолчанию. Имена и значения должны быть за­ключены в кавычки за исключением символа «?», который соответствует значению по умолчанию. Вместо символа «\» следует использовать «\\» (два под­ряд идущих символа). В конце файла следует добавить пустую строку, иначе REGEDIT может проигнорировать последнюю строку файла.

Существует и другой способ модификации реестра - это использование INF - файлов. Обычно эти файлы используются для установки драйверов устройств, но при помощи INF-файлов также можно управлять добавлением и удалением записей реестра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]