解决方案

解决方案

我们知道如何获取已安装软件的列表来自操作系统的一个实例。

我的 Windows 无法启动。没有安全模式。我想获取已安装软件的列表,以便可以擦除并重新安装。

答案1

解决方案

可以从注册表中检索已安装软件的列表。

  1. 要么移除硬盘并将其加载到另一个系统,要么启动任何 Linux 实时 CD/DVD/USB。

  2. 复制SOFTWARE位于 的文件X:\Windows\System32\config。此文件包含HKEY_LOCAL_MACHINE\SOFTWARE注册表配置单元,并包括系统范围内安装的软件数据。

  3. 复制NTUSER.DAT所有子文件夹中的所有文件X:\Users,并按其顺序重命名(例如NTUSER1.DATNTUSER2.DAT等)。这些文件包含HKEY_CURRENT_USER注册表配置单元,并包括每个用户安装的软件数据。

  4. 在运行 Windows 系统中获取所有复制的文件,然后打开提升的命令提示符

  5. 键入或粘贴以下命令,然后Enter在替换引号内的路径后按:

    reg load "HKLM\SOFTWARE2" "X:\Folder\containing\SOFTWARE"
    
  6. 将字符编码设置为 UTF-8 以避免出现 Unicode 字符问题:

    chcp 65001
    
  7. 要获取所有已安装的系统范围应用程序的列表,请运行以下命令:

    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"
    

    该列表将在桌面上创建。

  8. 如果原始系统是 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"
    
  9. 卸载计算机注册表配置单元:

    reg unload "HKLM\SOFTWARE2"
    
  10. 加载用户注册表配置单元:

    reg load "HKU\User1" "X:\Path\to\NTUSER1.DAT"
    
  11. 获取每个用户安装的软件列表:

    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"
    

    如果所需的密钥不存在,则表示没有用户安装的程序。

  12. 卸载注册表配置单元:

     reg unload "HKU\User1"
    
  13. 对任何其他NTUSERx.DAT文件重复步骤 10-12。

  14. 按字母顺序对结果列表进行排序:

     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

相关内容