Batch file 在不知道项名称的情况下基于项内的值查询注册表

Batch file 在不知道项名称的情况下基于项内的值查询注册表,batch-file,cmd,registry,key,uninstallation,Batch File,Cmd,Registry,Key,Uninstallation,我是一所高中的系统管理员,我想从我所有的教师笔记本电脑上卸载LanSchool,但是卸载要求使用安装它的MSI卸载LanSchool。我发现,可以使用注册表HKLM\Software\Microsoft\Windows(SID)中的卸载字符串卸载LanSchool卸载字符串=值 然而,我遇到的问题是,SID对于不同版本的软件是一个变量 然而,在变量键内是DisplayName“LanSchool教师” 我想知道是否可以以某种方式注册查询DisplayName,然后从那里将密钥导出到txt文件,将

我是一所高中的系统管理员,我想从我所有的教师笔记本电脑上卸载LanSchool,但是卸载要求使用安装它的MSI卸载LanSchool。我发现,可以使用注册表HKLM\Software\Microsoft\Windows(SID)中的卸载字符串卸载LanSchool卸载字符串=值

然而,我遇到的问题是,SID对于不同版本的软件是一个变量

然而,在变量键内是DisplayName“LanSchool教师”

我想知道是否可以以某种方式注册查询DisplayName,然后从那里将密钥导出到txt文件,将其设置为CMD中的变量,然后运行msiexec.exe/X{SIDVariable}/quiet

这将从该计算机上卸载LanSchool教师


我的问题是:我如何在不知道密钥名称的情况下注册查询,因为每个教师的笔记本电脑的密钥名称会有所不同。

在您的情况下,我认为您可以使用

REG Query HKLM\Software\Microsoft /V "DisplayName" /S
然后解析输出,找到要查找的密钥的名称
/V
表示查询值。
/S
表示应递归执行搜索


如果这不起作用和/或我不理解您的问题,请查看对搜索注册表有相当广泛概述的网站。这可能会教您找到密钥的其他方法。

我目前有reg查询“HKLM\Software\Microsoft\Wow6432Node\Windows\Uninstall”/v“DisplayName”/s>%temp%\lanschool.txt但是这对我不起作用,并且给了我一个错误:系统无法找到指定的注册表项或值。搜索路径应该是
HKLM\Software\Microsoft
,因为
Windows
部分有一个未知后缀(您省略了),实际上我尝试了REG查询“HKLM\Software”/v“DisplayName”/s>%temp%\lanschool.txt这对我很有效,但是现在我有一个充满显示名的文本文件…现在我如何找到要存储为变量的KeyName@在
DisplayName
的值上方,应输出键本身。如果您有多个(不需要的)
DisplayName
值,则可以尝试使用
/D
标志而不是
/V
,并搜索
“LanSchool教师”
。但这需要更长的时间。事实上,我尝试过使用/F,这给了我想要的,但是现在我有了信息,我该如何提取这些信息。在它输出键和显示名的那一刻,我需要从Reg键的末尾获取键名(当前是一个SID)。