批量文件在64位Vista中查询注册表

0 registry scripting 64-bit batch-file

大家好我:)我写的批处理文件有问题.它在32位上工作正常,但显然它不适用于64位系统,我不知道为什么因为我无法访问64位系统.

这是适用于Vista 32位系统的代码

    @echo off
Set Reg.Key=HKLM\SOFTWARE\Malwarebytes' Anti-Malware
  Set Reg.Val=InstallPath
  For /F "Tokens=2*" %%A In (
   'Reg Query "%Reg.Key%" /v "%Reg.Val%" ^| Find /I "%Reg.Val%"'
  ) Do Call Set MBAMPATH=%%B
Run Code Online (Sandbox Code Playgroud)

有人可以重新写它以64位工作吗?

总是谢谢:)

sno*_*h09 6

x86和x64版本的Windows上的批处理文件没有区别.您遇到的问题是WoW64和透明的注册表重定向,请参阅此处了解更多详细信息.

HKLM\SOFTWARE\Wow6432Node 是64位Windows安装上的32位软件的正确注册表项,此代码在我的机器上运行:

Set Reg.Key=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Malwarebytes' Anti-Malware
Set Reg.Val=InstallPath
For /F "Tokens=2*" %%A In (
    'Reg Query "%Reg.Key%" /v "%Reg.Val%" ^| Find /I "%Reg.Val%"' )
Do Call Set MBAMPATH=%%B
echo %mbampath%
Run Code Online (Sandbox Code Playgroud)

您的其他帖子包含基于%processor_architecture%环境变量的条件分支.但问题是,(我的机器上至少)%processor_architecture%"AMD64"不是"x64".

为什么不只是查询可能的注册表项而不是基于体系结构的分支?