itoboy 发表于 2021-3-13 21:53:55

求助64位Win7,vl-registry-read无法读取注册表信息

本帖最后由 itoboy 于 2021-3-13 23:10 编辑

引用秋枫大哥AutoCAD二次开发安装程序制作(2019-11-11)http://bbs.mjtd.com/thread-35156-1-1.html,生成的安装包无法读取注册表信息,电脑系统64位Win7,CAD2007(32位),vl-registry-read返回nil,相关代码如下:
(defun GetMyApplicationPath ()
(vl-registry-read
    (strcat
      "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"
      "MemMas_is1"
    )
    "Inno Setup: App Path"
)
)
但我在注册表里是可以找到相关信息的,如下图



如果使用秋枫大哥老版的制作程序生成的安装包,采用相同的代码是可以读取注册表信息的。
请问该怎么解决啊?求大神帮帮忙!

itoboy 发表于 2021-3-13 23:09:41

网上找到一段话:
CAD里面如何使用lsp读取注册表了,现在电脑系统有分32位和64位,根据不同软件的安装,注册表也不一样,32位系统只有一个32位的注册表,也意味着只支持32位软件,不支持64位软件。但是64位系统是支持32位软件的,所有说64位系统有两个注册表,如果安装包是64位软件,那直接写入默认的注册表里面,和32位系统一样。但是64位系统安装32位软件,注册表是写在32位注册表里面的。
32位系统32位软件统默认注册表路径:HKEY_LOCAL_MACHINE\\SOFTWARE
64位系统64位软件统默认注册表路径:HKEY_LOCAL_MACHINE\\SOFTWARE
64位系统32位软件统默认注册表路径:HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node
---------------------
《伙计百科》版权所有。
源地址:http://huojibk.com/2020/05/374.html
版权声明:转载请附上博文链接!

不知道是不是和这个有关,CAD2007是32位的,在64位系统里注册表路径本来应该在:HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node,但秋枫大哥的程序把注册表路径写在了:HKEY_LOCAL_MACHINE\\SOFTWARE,导致注册表信息无法读取。

然后我在64位系统里装了个64位的CAD2018,采用楼上的代码能够得到:"C:\\Program Files (x86)\\MemMas V2.1"

烟盒迷唇 发表于 2021-3-14 08:37:46

应该是这个道理

mokson 发表于 2021-3-14 08:42:44

你们研究得很通透呀。

wym 发表于 2021-5-17 19:46:13

楼主,我也是这种情况,想问下最后怎么解决的?秋枫大侠的安装包制作工具就不能用于64位系统了?

hn10183051 发表于 2023-1-5 13:05:39

楼主,我也是这种情况,想问下最后怎么解决的?
页: [1]
查看完整版本: 求助64位Win7,vl-registry-read无法读取注册表信息