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.
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.
The list of installed software can be retrieved from the registry.
Either remove the hard drive and load it onto another system, or boot any Linux live CD/DVD/USB.
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.
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.
Get all the copied files in a working Windows system, and open an elevated command prompt.
Type or paste the following command, and press Enter after replacing the path inside quotes:
reg load "HKLM\SOFTWARE2" "X:\Folder\containing\SOFTWARE"
Set the character encoding to UTF-8 to avoid issues with Unicode characters:
chcp 65001
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.
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"
Unload the machine registry hive:
reg unload "HKLM\SOFTWARE2"
Load the user registry hive:
reg load "HKU\User1" "X:\Path\to\NTUSER1.DAT"
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.
Unload the registry hive:
reg unload "HKU\User1"
Repeat steps 10-12 for any other NTUSERx.DAT
file.
Sort the resulting list alphabetically:
sort "%UserProfile%\Desktop\list.txt" /o "%UserProfile%\Desktop\list.txt"
Uninstall
key in the User hive does not exist, does that mean there are no programs installed only for that user?
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.
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
HKEY_LOCAL_MACHINE
hive.
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.