gpt4 book ai didi

windows - 递归搜索注册表

转载 作者:可可西里 更新时间:2023-11-01 11:18:53 26 4
gpt4 key购买 nike

我可以使用下面的代码成功查询已知键的值。我如何递归搜索子项(在我下面的示例中,Uninstall 文件夹中的所有子项)以获取特定数据的值?我的目的是查看是否安装了某些特定程序,如果没有,则安装它。

function
...(omitted)
var
Res : String;
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{92EA4162-10D1-418A-91E1-5A0453131A38}','DisplayName', Res);
if Res <> 'A Value' then
begin
// Successfully read the value
MsgBox('Success: ' + Res, mbInformation, MB_OK);
end
end;

最佳答案

原理很简单,用RegGetSubkeyNames你会得到一个特定键的子键数组,然后你只需迭代这个数组并查询所有子键的 DisplayName 值并将该值(如果有)与搜索到的值进行比较。

以下函数显示了实现。请注意,我已经从路径中删除了 Wow6432Node 节点,因此如果您确实需要它,请修改代码中的 UnistallKey 常量:

[Code]
const
UnistallKey = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall';

function IsAppInstalled(const DisplayName: string): Boolean;
var
S: string;
I: Integer;
SubKeys: TArrayOfString;
begin
Result := False;

if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, UnistallKey, SubKeys) then
begin
for I := 0 to GetArrayLength(SubKeys) - 1 do
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, UnistallKey + '\' + SubKeys[I],
'DisplayName', S) and (S = DisplayName) then
begin
Result := True;
Exit;
end;
end;
end
else
RaiseException('Opening the uninstall key failed!');
end;

关于windows - 递归搜索注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com