我们知道如何获取已安装软件的列表来自操作系统的一个实例。
我的 Windows 无法启动。没有安全模式。我想获取已安装软件的列表,以便可以擦除并重新安装。
答案1
解决方案
可以从注册表中检索已安装软件的列表。
要么移除硬盘并将其加载到另一个系统,要么启动任何 Linux 实时 CD/DVD/USB。
复制
SOFTWARE
位于 的文件X:\Windows\System32\config
。此文件包含HKEY_LOCAL_MACHINE\SOFTWARE
注册表配置单元,并包括系统范围内安装的软件数据。复制
NTUSER.DAT
所有子文件夹中的所有文件X:\Users
,并按其顺序重命名(例如NTUSER1.DAT
、NTUSER2.DAT
等)。这些文件包含HKEY_CURRENT_USER
注册表配置单元,并包括每个用户安装的软件数据。在运行 Windows 系统中获取所有复制的文件,然后打开提升的命令提示符。
键入或粘贴以下命令,然后Enter在替换引号内的路径后按:
reg load "HKLM\SOFTWARE2" "X:\Folder\containing\SOFTWARE"
将字符编码设置为 UTF-8 以避免出现 Unicode 字符问题:
chcp 65001
要获取所有已安装的系统范围应用程序的列表,请运行以下命令:
for /f "tokens=3,*" %A in ('"reg query "HKLM\SOFTWARE2\Microsoft\Windows\CurrentVersion\Uninstall" /v "DisplayName" /s | findstr /c:"REG_SZ" "') do @echo %A %B>>"%UserProfile%\Desktop\list.txt" for /f "tokens=3,*" %A in ('"reg query "HKLM\SOFTWARE2\Microsoft\Windows\CurrentVersion\Installer\UserData" /v "DisplayName" /s | findstr /c:"REG_SZ" "') do @echo %A %B>>"%UserProfile%\Desktop\list.txt"
该列表将在桌面上创建。
如果原始系统是 32 位(x86),请跳至步骤 9。否则也运行以下命令:
for /f "tokens=3,*" %A in ('"reg query "HKLM\SOFTWARE2\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /v "DisplayName" /s | findstr /c:"REG_SZ" "') do @echo %A %B>>"%UserProfile%\Desktop\list.txt"
卸载计算机注册表配置单元:
reg unload "HKLM\SOFTWARE2"
加载用户注册表配置单元:
reg load "HKU\User1" "X:\Path\to\NTUSER1.DAT"
获取每个用户安装的软件列表:
for /f "tokens=3,*" %A in ('"reg query "HKU\User1\Software\Microsoft\Windows\CurrentVersion\Uninstall" /v "DisplayName" /s | findstr /c:"REG_SZ" "') do @echo %A %B>>"%UserProfile%\Desktop\list.txt" for /f "tokens=3,*" %A in ('"reg query "HKU\User1\Software\Microsoft\Installer" /v "ProductName" /s | findstr /c:"REG_SZ" "') do @echo %A %B>>"%UserProfile%\Desktop\list.txt"
如果所需的密钥不存在,则表示没有用户安装的程序。
卸载注册表配置单元:
reg unload "HKU\User1"
对任何其他
NTUSERx.DAT
文件重复步骤 10-12。按字母顺序对结果列表进行排序:
sort "%UserProfile%\Desktop\list.txt" /o "%UserProfile%\Desktop\list.txt"
已知的问题
- 某些应用程序可能会被列出多次。这通常是因为它们包含多个共享相同显示名称的组件。
参考
答案2
从 Windows 7 DVD 启动
维修
命令提示符
dism /Image:c:\ /Get-Apps(获取 MSI 安装的程序。)
您应该能够从那里运行 regedit。
在 regedit 中使用 File Load Hive 并选择 c:\windows\system32\config\SOFTWARE
导出(第一个是 64 位软件,第二个是 32 位软件)
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall