注册查询问题

我有一个批处理脚本,可以在我们的系统上进行报告,并且其中的一部分可以查询注册处的信息 脚本无法获取系统运行时的密钥值,但是每当我自己运行脚本时,它都能正常工作

命令:

REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\ScanMail for Exchange\CurrentVersion" /v PatternStringFormatted > current1.tmp 

应该返回:

 HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\ScanMail for Exchange\CurrentVersion PatternStringFormatted REG_SZ 6.645.00 

此脚本在Server 2008 R2计算机上失败,但在Server 2003 R2计算机上运行良好。

用reg命令和64位和32位密钥发现了它的一个问题。 Reg查询32位密钥,但该信息不是从64位密钥复制的。

看起来像这个脚本需要更新到PowerShell

reg命令只是您正在运行的命令解释器的一部分。 在Server 2008的x64版本中,有两种可能的命令解释器,您的脚本可以运行为:

  • %WINDIR%\ SYSTEM32 \ CMD.EXE
  • %WINDIR%\ Syswow64资料\ cmd.exe的

具有讽刺意味的是,System32中的副本实际上是64位二进制文​​件,而SysWOW64中的副本是一个32位二进制文​​件。 如果您的脚本恰好在32位命令解释程序的上下文中运行,则是的,您的reg命令只能访问redirect的32位registry项。 但是如果你运行它的64位命令解释器,它将有权访问所有的64位密钥就像任何其他的64位应用程序。

我猜测你触发脚本的自动化过程本身就是一个32位的过程。 因此,当它调用命令提示符时,Windows会为其提供32位版本的命令提示符。 因此,您的脚本只能访问32位密钥。