我有一个批处理脚本,可以在我们的系统上进行报告,并且其中的一部分可以查询注册处的信息 脚本无法获取系统运行时的密钥值,但是每当我自己运行脚本时,它都能正常工作
命令:
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版本中,有两种可能的命令解释器,您的脚本可以运行为:
具有讽刺意味的是,System32中的副本实际上是64位二进制文件,而SysWOW64中的副本是一个32位二进制文件。 如果您的脚本恰好在32位命令解释程序的上下文中运行,则是的,您的reg命令只能访问redirect的32位registry项。 但是如果你运行它的64位命令解释器,它将有权访问所有的64位密钥就像任何其他的64位应用程序。
我猜测你触发脚本的自动化过程本身就是一个32位的过程。 因此,当它调用命令提示符时,Windows会为其提供32位版本的命令提示符。 因此,您的脚本只能访问32位密钥。