Board logo

标题: [注册表类] 关于64位操作系统秕处理运行的问题,特难,求助。 [打印本页]

作者: wspj2000    时间: 2023-3-31 09:24     标题: 关于64位操作系统秕处理运行的问题,特难,求助。

批处理命令很简单,regedit /s aaa.reg
在32和64位操作系统下,双击此批处理都是正常的。
但是使用winrar将此批处理压缩成自解压程序,解压后自动运行此批处理,则在32位系统下正常,在64位系统下就不正常了,显示程序成功运行,但实际并未起到导入注册表的作用。
特求助,万分感谢!
作者: czjt1234    时间: 2023-3-31 10:38

没道理啊,你把文件传到百度网盘
作者: wspj2000    时间: 2023-3-31 10:53

回复 2# czjt1234


    个人估计双击批处理时调用的regedit和自动运行批处理时调用的版本不一样,因为64位系统里,是有两个regedit.exe的,一个位于C:\Windows,一个位于C:\Windows\SysWOW64,但是我试过指定两个路径中的regedit.exe,也是都不行。
作者: wspj2000    时间: 2023-3-31 11:15

原因找到了,但依然无法解决。
双击批处理时调用的是64位的regedit.exe,但打包成exe后自动运行时调用的是32位的regedit.exe.
求大神帮忙 。
作者: czjt1234    时间: 2023-3-31 13:07

压缩软件的版本是啥
作者: czjt1234    时间: 2023-3-31 13:14

注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\

在64位系统,32应用程序会变成指向
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\

估计是这个问题
批处理没问题。那么是压缩软件的问题,64位的压缩软件?
作者: wspj2000    时间: 2023-3-31 15:56

回复 6# czjt1234


不是64位的压缩软件,而是用了很多年的nsis文件夹压缩吕中,但用winrar压缩时确实是64位的,结果一样。
现发现在64位系统“运行”里输入regedit,或是双击批处理,则运行的regedit.exe是64位版本。
如果把批处理制作成自解压程序后双击运行,则运行的regedit.exe肯定是32位版本,诡异的是用everything搜索出来的regedit.exe有两个大小不一样的,明显一个是32bit一个是64bit,但双击运行却永远只能运行成32bit版本的。
高手可以自测下。
作者: wspj2000    时间: 2023-3-31 16:13

终于找到解决办法了,思路来自czjt1234大神的64位系统重定向。解决代码如下:
@echo off
if"%ProgramFiles(x86)%" =="" goto MainCode
if not exist %SystemRoot%\\Sysnative\\cmd.exe goto MainCode
%SystemRoot%\\Sysnative\\cmd.exe /C"%~f0" %*
goto :EOF

:MainCode
set Program
regedit.exe /s aa.reg

十分感谢czjt1234!
作者: wspj2000    时间: 2023-3-31 16:21

这个方法还是判断系统是否64位系统,如是则调用64位的cmd.exe来解决的问题的。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2