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-файлов также можно управлять добавлением и удалением записей реестра.
