为啥第二段的执行结果不正确?
usesregistry;
procedure TForm3.Button1Click(Sender: TObject);
var
reg: TRegistry;
begin
with TRegistry.Create do
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE; //设置根键
if OpenKey('\SOFTWARE\Python', True) then //打开子键
begin
if not keyexists('PythonCore') then
ShowMessage('存在')
else
ShowMessage('不存在');
end;
Free;
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
var
reg: TRegistry;
begin
with TRegistry.Create do
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\SOFTWARE\WOW6432Node\Python', True) then
begin
if keyexists('PythonCore') then
ShowMessage('存在')
else
ShowMessage('不存在');
end;
Free;
end;
end; 你是要写 什么呢 xinyuguy 发表于 2021-5-14 09:17
你是要写 什么呢
@xinyuguy
判断以下根键值是否存在?
HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore
HKLM\SOFTWARE\WOW6432Node\Python\PythonCore delphi?你的兴趣很广泛啊 boxer 发表于 2021-5-14 09:47
delphi?你的兴趣很广泛啊
直接换武器:
AHK的正确代码:
SetRegView 64
RegRead, OutputVar1, HKEY_LOCAL_MACHINE, SOFTWARE\Python\PythonCore, SupportUrl
if OutputVar=''
MsgBox,64位的不存在
else
MsgBox,64位的存在`n%OutputVar1%
SetRegView 32
RegRead, OutputVar2, HKEY_LOCAL_MACHINE, SOFTWARE\WOW6432Node\Python\PythonCore, SupportUrl
if OutputVar =
MsgBox,32位的不存在
else
MsgBox,32位的存在`n%OutputVar2% DELPHI大小写敏感的不?WOW6432Node是不是不对? wslans 发表于 2021-5-14 09:50
DELPHI大小写敏感的不?WOW6432Node是不是不对?
注册表键值不都大小写混搭的
我网上试了几种代码,32位版的识别结果都是不正确的
换虚拟机也一个结果 本帖最后由 wslans 于 2021-5-14 10:16 编辑
不是那个意思,注册表里Wow6432Node是这样的大小写(我的是这样的,你的不知道是不是不一样),你的 代码OW大写了,你写的是WOW6432Node,如果这部分是大小写敏感的话,你的代码查找的键肯定是不存在的了,DELPHI不清楚,你 把WOW6432Node改成Wow6432Node试试 wslans 发表于 2021-5-14 10:14
不是那个意思,注册表里Wow6432Node是这样的大小写(我的是这样的,你的不知道是不是不一样),你的 代码OW ...
试了一下,还是不行。{:301_972:} 试了一下,下面的代码就是可以的,但是换了那个路径下,就读取不到了,或许是因为权限问题吧。
奶奶的,我可是默认管理员权限,其他也是全开的。
var
ARegistry : TRegistry;
begin
ARegistry := TRegistry.Create;
with ARegistry do
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey( ′Software\Microsoft\Windows\CurrentVersion′,false ) then
begin
memo1.lines.add('Windows版本:′+ ReadString(′Version′));
memo1.lines.add('Windows版本号:′+ ReadString(′VersionNumber′));
memo1.lines.add(′Windows子版本号:′+ ReadString(′SubVersionNumber′));
end;
CloseKey;
Destroy;
end;
end;
页:
[1]
2