最高の解決策は、サブキーを列挙することです。 RegEnumKeyEx
を使用すると、列挙するキーがなくなるまで単純なループでこれを行うだけです。
しかし、TRegistry
を使用して、Delphiでサブキーを列挙することも簡単まだです:あなたが気をつけなければならない
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ビットビューで検索することです。 MySQLの64ビット版がインストールされている場合は、レジストリの64ビットビューを使用することが期待されます。 64ビットOS上の32ビットDelphiプロセスでは、ステップレジストリのリダイレクトを行う必要があります。 KEY_WOW64_64KEY
をTRegistry
コンストラクタに渡してください。
あなたが提案する別の方法は、アプリケーションにversion stringの可能なすべての値をハードコードすることです。これはハードコードされたリストにないバージョンがリリースされるとすぐに起こるのを待っているようなものです。
ありがとうございました!これは私が探していたもので、とてもシンプルです。また、同様のことをしている他の人のために、私はRegistry.RegistryConnect( 'SomeIP')を使ってリモートコンピュータに接続しました。 – Aaron