# List all installed software without booting into the OS

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.

-
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 here. Only after seeing no possible solution I decided to reinstall. – Milind R Feb 24 '14 at 5:44

# Solution

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.

 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

-
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 6: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 (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 9: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

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

-
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
@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