[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

没道理啊,你把文件传到百度网盘

QQ 20147578

TOP

回复 2# czjt1234


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

TOP

原因找到了,但依然无法解决。
双击批处理时调用的是64位的regedit.exe,但打包成exe后自动运行时调用的是32位的regedit.exe.
求大神帮忙 。

TOP

压缩软件的版本是啥

QQ 20147578

TOP

注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\

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

估计是这个问题
批处理没问题。那么是压缩软件的问题,64位的压缩软件?

QQ 20147578

TOP

回复 6# czjt1234


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

TOP

终于找到解决办法了,思路来自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!

TOP

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

TOP

返回列表