吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1263|回复: 13
收起左侧

[求助] 为啥第二段的执行结果不正确?

[复制链接]
冥界3大法王 发表于 2021-5-14 09:05
[Delphi] 纯文本查看 复制代码
uses
  registry;

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
你是要写 什么呢
 楼主| 冥界3大法王 发表于 2021-5-14 09:22
xinyuguy 发表于 2021-5-14 09:17
你是要写 什么呢

@xinyuguy
判断以下根键值是否存在?
HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore
HKLM\SOFTWARE\WOW6432Node\Python\PythonCore
boxer 发表于 2021-5-14 09:47
 楼主| 冥界3大法王 发表于 2021-5-14 09:49
boxer 发表于 2021-5-14 09:47
delphi?你的兴趣很广泛啊

直接换武器:
AHK的正确代码:


[Asm] 纯文本查看 复制代码
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%
wslans 发表于 2021-5-14 09:50
DELPHI大小写敏感的不?WOW6432Node是不是不对?
 楼主| 冥界3大法王 发表于 2021-5-14 09:59
wslans 发表于 2021-5-14 09:50
DELPHI大小写敏感的不?WOW6432Node是不是不对?

注册表键值不都大小写混搭的
我网上试了几种代码,32位版的识别结果都是不正确的
换虚拟机也一个结果
wslans 发表于 2021-5-14 10:14
本帖最后由 wslans 于 2021-5-14 10:16 编辑

不是那个意思,注册表里Wow6432Node是这样的大小写(我的是这样的,你的不知道是不是不一样),你的 代码OW大写了,你写的是WOW6432Node,如果这部分是大小写敏感的话,你的代码查找的键肯定是不存在的了,DELPHI不清楚,你 把WOW6432Node改成Wow6432Node试试
 楼主| 冥界3大法王 发表于 2021-5-14 10:28
wslans 发表于 2021-5-14 10:14
不是那个意思,注册表里Wow6432Node是这样的大小写(我的是这样的,你的不知道是不是不一样),你的 代码OW ...

试了一下,还是不行。
 楼主| 冥界3大法王 发表于 2021-5-14 10:36
试了一下,下面的代码就是可以的,但是换了那个路径下,就读取不到了,或许是因为权限问题吧。
奶奶的,我可是默认管理员权限,其他也是全开的。

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;
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表