
自认为不是废话,所以回答一下:
------------------------------------------------------------
一般程序的注册表信息写在这个位置:
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里,怎么查找出某个软件的安装目录、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)