When you use Control Panel / Add/Remove Programs, some 32bit programs are missing from the display?

The display is built by retrieving:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<ProgramKey>\DisplayName

Only entries with a Value Name of DisplayName are supposed to be listed.

Unfortuneatly, any DisplayName text string that exceeds 64 characters is erroneously ignored.

You can manually inspect and fix the errant entries, or you can run undn.bat.

undn.bat uses standard commands and contains:

<b>@echo off
setlocal
set fix=n
regedit /e %temp%\undnout.reg HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
if exist %temp%\undnin.reg del /q %temp%\undnin.reg
for /f "Tokens=1* Delims<h1><a name="_i_in_temp_undnout_reg_do_call_parse_i_j_if_fix_">" %%i in (%temp%\undnout.reg) do call :parse "%%i" %%j
if %fix%</a></h1>"n" set fix=&goto end
regedit /s %temp%\undnin.reg
endlocal
goto end
:parse
set str1=%1
set str2=%2
if %str1%<h1><a name="_REGEDIT4_echo_REGEDIT4_gt_temp_undnin_reg_amp_goto_end_set_str1_str1_if_str1_0_1_">"REGEDIT4" @echo REGEDIT4>%temp%\undnin.reg & goto end
set str1=%str1:"=%
if "%str1:~0,1%"</a></h1>"\[" set key=%str1%&goto end
if not "%str1%"<h1><a name="_DisplayName_goto_end_set_work_str2_0_63_set_work_work_set_work_work_set_name_work_if_name_">"DisplayName" goto end
set work=%str2:~0,63%!!!
set work=%work:"!!!="%
set work=%work:!!!="%
set name=%work%
if %name%</a></h1>%str2% goto end
set fix=y
@echo %key%>>%temp%\undnin.reg
@echo "%str1%"=%name%>>%temp%\undnin.reg
:end</b>