在Delphi里,怎么查找出某个软件的安装目录

在Delphi里,怎么查找出某个软件的安装目录,第1张

自认为不是废话,所以回答一下:
------------------------------------------------------------
一般程序的注册表信息写在这个位置:
HKEY_LOCAL_MACHINE\SOFTWARE\<公司名>\程序名\

如Acrobat Reader的安装路径可从以下位置取得:
HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\50\InstallPath
-----------------------------------------------------------
JDK 的目录一般就在
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\
但是根据安装的版本不同,会有不同的子目录,比如,15版本的信息就放在: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\15\ 里面,其中
"JavaHome"="X:\XXXXXX\jdk15" 这个键值就是他的路径了。

所以你可以用DELPHI遍历 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\ 的所有子目录,找到JavaHome键值就是了。

-----------------------------------------------------------

另一种方法是从程序的反安装信息中找程序路径,控制面板“添加/删除程序”就是调用其下的UninstallString来进行程序反安装的:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

枚举其下所有项,通过DisplayName匹配你要找的程序名,通过UninstallString可得到反安装字串,解析出反安装程序路径——但注意不是所有程序的反安装路径和程序路径是一致的;

如果存在InstallLocation键,且它对应的值不为空,那就是安装路径。
-------------------------------------------
自己做的例子,已经调试通过(最顶上要加 Uses Registry 单元),如果有多个的话,取第一个应该就可以了,我现在用Showmessage都Show出来了:
procedure TForm1Button1Click(Sender: TObject);
var
Reg: TRegistry;
Val:TStrings;
ii:integer;
TmpStr:String;
begin
Reg:=TRegistryCreate();
Val:=TStringListCreate();
Try
RegRootKey:=HKEY_LOCAL_MACHINE;
if RegOpenKey('SOFTWARE\JavaSoft\Java Development Kit\',False) then
RegGetKeyNames(Val);
//Memo1LinesAddStrings(Val);
if ValCount>1 then
begin
for ii:=0 to ValCount-1 do
begin
RegCloseKey;
if RegOpenKey('SOFTWARE\JavaSoft\Java Development Kit\'+ValStrings[ii],False) then
begin
TmpStr:=RegReadString('JavaHome');
if TmpStr<>'' then
Showmessage(TmpStr);
end;
end;
end;
Finally
RegFree;
ValFree;
end;
end;
//-------加了 RegCloseKey;

以上就是关于在Delphi里,怎么查找出某个软件的安装目录全部的内容,包括:在Delphi里,怎么查找出某个软件的安装目录、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10092882.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存