Batch file 不带REG.exe的注册表递归搜索?

Batch file 不带REG.exe的注册表递归搜索?,batch-file,batch-processing,Batch File,Batch Processing,我正在编写一个批处理脚本,然后使用“快速批处理文件编译器”进行“编译”。编译旨在以重影模式执行脚本(根本没有窗口弹出窗口) 问题是,当我编译文件时,由于不知道是什么原因,我的BAT无法再列出HKLM\软件中的所有密钥(对于HKLM\系统,它可以工作,等等)。 这不是一个正确的问题,也不是一个“空间”之类的问题。在这种情况下,这似乎是一个错误级别的问题(没有编译的同一个.BAT文件工作正常) 所以我希望能够递归地搜索整个注册表中的特定注册表值(在TXT文件中);不使用REG.exe 你知道我怎么用

我正在编写一个批处理脚本,然后使用“快速批处理文件编译器”进行“编译”。编译旨在以重影模式执行脚本(根本没有窗口弹出窗口)

问题是,当我编译文件时,由于不知道是什么原因,我的BAT无法再列出HKLM\软件中的所有密钥(对于HKLM\系统,它可以工作,等等)。 这不是一个正确的问题,也不是一个“空间”之类的问题。在这种情况下,这似乎是一个错误级别的问题(没有编译的同一个.BAT文件工作正常)

所以我希望能够递归地搜索整个注册表中的特定注册表值(在TXT文件中);不使用REG.exe

你知道我怎么用球拍拍拍吗

下面是非常基本的代码,让我用QBFC重现这个问题

    reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
REM reg query "HKLM\SYSTEM\CurrentControlSet\services\iaStorF"

echo The errorlevel is : %ERRORLEVEL% for this key
If %ERRORLEVEL% EQU 0 (
echo %date%;%time%;%computername%;%%u >> %computername%_reg.csv
)
)

@pause
因此,这段代码在.BAT文件中非常有效,但在使用QFBC编译时就不起作用了

在EXE版本中,我的ErrorLevel为1,因为找不到密钥。从BAT版本中,可以正确找到密钥(与代码完全相同)

快速批处理文件编译器可在此处下载:


非常感谢

没有用于搜索注册表的本机批处理方法。你能给我们看看你的密码吗?这可能有助于我们找到问题。您可以将PowerShell命令添加到批处理脚本中--类似于
PowerShell“gci-path registry::HKLM\Software |%{${.Name}”
(当然,在批处理脚本中,您可能需要在该命令中加倍泵送
%%
,以指定文字
%
,而不是变量标识符。)我已经编辑了我的帖子,添加了经过测试的代码。QBFC是这个应用程序:“不工作”到底是什么意思?未创建文件“%computername%”\u reg.csv?还是它是空的?还有什么?对不起,你说得对!嗯,如果我执行EXE,HKLM\软件的某些子项将不会列出,因此搜索不相关。如果我从BAT直接启动扫描,我可以列出HKLM\软件中的所有内容,这样我就可以找到我知道存在的其中一个子项。