6

We know how to get the list of software installed from an instance of an operating system.

My windows is unbootable. No safe mode. I want to get the list of installed software so that I can wipe and reinstall.

Milind R
  • 887
  • 1
  • 12
  • 29
  • What stop code or bug check are you getting that windows is unbootable? – cybernard Feb 23 '14 at 16:19
  • @cybernard BSOD PROCESS1_INITIALIZATION_ERROR 0x000000b6. Discussed in a [Long thread](http://www.sevenforums.com/bsod-help-support/312333-process1_initialization_error-0x000000b6.html) here. Only after seeing no possible solution I decided to reinstall. – Milind R Feb 24 '14 at 05:44

2 Answers2

6

Solution

The list of installed software can be retrieved from the registry.

  1. Either remove the hard drive and load it onto another system, or boot any Linux live CD/DVD/USB.

  2. Copy the SOFTWARE file located in the X:\Windows\System32\config. This file contains the HKEY_LOCAL_MACHINE\SOFTWARE registry hive, and includes the system-wide installed software data.

  3. Copy all NTUSER.DAT files from all X:\Users subfolders, and rename them after their order (e.g. NTUSER1.DAT, NTUSER2.DAT, etc.). These files contains the HKEY_CURRENT_USER registry hive, and include the per-user installed software data.

  4. Get all the copied files in a working Windows system, and open an elevated command prompt.

  5. Type or paste the following command, and press Enter after replacing the path inside quotes:

    reg load "HKLM\SOFTWARE2" "X:\Folder\containing\SOFTWARE"
    
  6. Set the character encoding to UTF-8 to avoid issues with Unicode characters:

    chcp 65001
    
  7. To get the list of all system-wide applications installed, run these commands:

    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"
    

    The list will be created on the desktop.

  8. If the original system was 32-bit (x86), skip to step 9. Otherwise run the following command too:

    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. Unload the machine registry hive:

    reg unload "HKLM\SOFTWARE2"
    
  10. Load the user registry hive:

    reg load "HKU\User1" "X:\Path\to\NTUSER1.DAT"
    
  11. Get the list of the per-user installed software:

    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"
    

    If the required keys don't exist, that means there are no user-installed programs.

  12. Unload the registry hive:

     reg unload "HKU\User1"
    
  13. Repeat steps 10-12 for any other NTUSERx.DAT file.

  14. Sort the resulting list alphabetically:

     sort "%UserProfile%\Desktop\list.txt" /o "%UserProfile%\Desktop\list.txt"
    

Known issues

  • Some applications may be listed more than once. That usually happens when they include several components which share the same display name.

References

and31415
  • 14,490
  • 3
  • 45
  • 62
  • Excellent! If the specified `Uninstall` key in the User hive does not exist, does that mean there are no programs installed only for that user? – Milind R Feb 24 '14 at 06:40
  • @MilindR The `Uninstall` key is what gets queried (mostly) by the Programs and Features control panel applet to populate the software list. Anyway, I've edited the original answer in order to include [Windows Installer](http://en.wikipedia.org/wiki/Windows_Installer) (MSI) installed programs. In case you followed all the steps already, repeat step 4 onwards. Let me know if you have any further doubts. – and31415 Feb 24 '14 at 09:36
  • Worked perfectly. Thanks for making it so detailed. I could have managed with just the name of the key and attribute, but it will help others a great deal. – Milind R Feb 24 '14 at 18:31
3

Boot from Windows 7 DVD

repair

command prompt

dism /Image:c:\ /Get-Apps (Gets MSI installed programs.)

You should be able to run regedit from there.

Inside regedit use File Load Hive and select c:\windows\system32\config\SOFTWARE

export (First one 64 bit software, and 2nd is 32 bit software)

 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
cybernard
  • 13,380
  • 3
  • 29
  • 33
  • There could also be user-installed programs which wouldn't be listed in the `HKEY_LOCAL_MACHINE` hive. – and31415 Feb 23 '14 at 17:42
  • 1
    @and31415 Also fully portable programs that you would normally run off a USB stick. However, the above 2 registry locations should give 99 plus or minus a couple percent. – cybernard Feb 23 '14 at 17:49
  • It probably wouldn't hurt to consider the user registry hives, unless one can be sure they wouldn't list additional programs. Also, if the OP had some portable applications on a USB stick, those wouldn't be affected by a Windows reinstall. Either way, simply running `regedit` is not enough because you have to manually load the `C:\Windows\System32\config\SOFTWARE` registry hive first in order to access the actual keys. – and31415 Feb 23 '14 at 18:24
  • The `dism` command failed for me... – Milind R Feb 24 '14 at 10:39