列出所有已安装的软件而无需启动到操作系统

Mil*_*d R 6 windows-7

我们知道如何从操作系统的实例中获取安装的软件列表

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

and*_*415 6

解决方案

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

  1. 移除硬盘驱动器并将其加载到另一个系统上,或者启动任何 Linux live 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"
    
    Run Code Online (Sandbox Code Playgroud)
  6. 将字符编码设置为 UTF-8 以避免出现 Unicode 字符问题:

    chcp 65001
    
    Run Code Online (Sandbox Code Playgroud)
  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"
    
    Run Code Online (Sandbox Code Playgroud)

    该列表将在桌面上创建。

  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"
    
    Run Code Online (Sandbox Code Playgroud)
  9. 卸载机器注册表配置单元:

    reg unload "HKLM\SOFTWARE2"
    
    Run Code Online (Sandbox Code Playgroud)
  10. 加载用户注册表配置单元:

    reg load "HKU\User1" "X:\Path\to\NTUSER1.DAT"
    
    Run Code Online (Sandbox Code Playgroud)
  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"
    
    Run Code Online (Sandbox Code Playgroud)

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

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

     reg unload "HKU\User1"
    
    Run Code Online (Sandbox Code Playgroud)
  13. 对任何其他NTUSERx.DAT文件重复步骤 10-12 。

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

     sort "%UserProfile%\Desktop\list.txt" /o "%UserProfile%\Desktop\list.txt"
    
    Run Code Online (Sandbox Code Playgroud)

已知的问题

  • 某些应用程序可能会被多次列出。当它们包含多个共享相同显示名称的组件时,通常会发生这种情况。

参考