Лучшее решение - перечислить подключи. Используя RegEnumKeyEx
, вы просто делаете это в простом цикле, пока не останется больше ключей для перечисления.
Однако перечисление подключей в Delphi с использованием TRegistry
еще проще:
program _EnumSubKeys;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes, Windows, Registry;
procedure EnumSubKeys(RootKey: HKEY; const Key: string);
var
Registry: TRegistry;
SubKeyNames: TStringList;
Name: string;
begin
Registry := TRegistry.Create;
Try
Registry.RootKey := RootKey;
Registry.OpenKeyReadOnly(Key);
SubKeyNames := TStringList.Create;
Try
Registry.GetKeyNames(SubKeyNames);
for Name in SubKeyNames do
Writeln(Name);
Finally
SubKeyNames.Free;
End;
Finally
Registry.Free;
End;
end;
begin
EnumSubKeys(HKEY_LOCAL_MACHINE, 'Software\Microsoft');
Readln;
end.
Одна вещь, на которую вам следует обратить внимание, это поиск в 64-битном представлении реестра. Если у вас установлена 64-битная версия MySQL, я ожидаю, что она будет использовать 64-битное представление реестра. В 32-битном процессе Delphi в 64-битной ОС вам потребуется отменить перенаправление реестра. Сделайте это, передав KEY_WOW64_64KEY
конструктору TRegistry
.
Альтернатива, которую вы предлагаете, - жестко запрограммировать все возможные значения строки версии в ваше приложение. Это похоже на ошибку, ожидающую, когда произойдет выход версии, которой нет в вашем жестко закодированном списке.