Needles in a Haystack

In my day to day job as a support engineer. One of the frustrating elements is dllhell scenarios and rogue registry entries. In most cases, it's better to ask customers to head on over to windows update to ensure all the latest components and binaries are installed in their correct fashion (as well as ensuring your operating system is upto date). A lot of the problems surprisingly get fixed when customers run this. Believe me, its not good when you spent 15/20 hrs on a support case only to find out that a dll or it's associated components were updated a few months back that was up on the site before we started the support journey.

But what happens when you are in a closed environment and need to prove that dll "x" is causing a problem and your application is not behaving as it should. Well, one of the cool tools that we've come up with is something called the Microsoft Product Support Reporting tools (MPSReports). This tool is essential in finding out all about your system rather than you ripping out reports of registry entries or performing your own logs like dir *.dll and piping it to a text file (dir *.dll > mydll.txt) - yuk.

What so cool about MPS reports? Well imagine you are having performance problems - where do you start?

The first check is to try and find out the state of your machine to try and narrow down the problem? find out what is installed and registrered?. On many machines, it is like trying to find a needle in a haystack to try and understand why something is breaking, Setup issues, hotfix issues and I could go on....fortunately for us, the tool will capture a lot of this infomation for us. Here's a list of the reports it could help you gather.

AppCompatFlags - Copy of the regitry entries for App Compatibility.
ADDiag.txt - If machine is a DC then this will have the result from the Diags.
Application.evt - Application Event log EVT format.
Application.txt - Application Event log TXT format.
Boot_ini.txt - Copy of the Boot.ini file.
Comsetup.log - Copy of Com+ Setup Log file.
DBerr.txt - Copy of the SP Catalog logging file.
Devcon.txt - PNP Information for all Devices in the machine.
Diskmap.txt - Low level look at MBR, and PBS.
DMDiag.log - Dynamic Disk Log.
DOSDevices.txt - Hardware PCI Information.
DriverQuery.txt - Tells if the installed Drivers are signed or not.
Drivers.csv - Comma Seperated file of a checksym of the drivers.
Drivers.txt - Text file of a checksym of the drivers.
Drvman.txt - Output of Drvman.exe for printer driver information installed.
DrWatson.log - Bottom few logs from the Dr. Watson Log file.
Filters.txt - List of the Upper and Lower filters installed.
FTDMPNT.txt - Diskprobe look of MBR and PBS of each drive.
GPResult.txt - Log from a run of the GP Result command to tell which policies were applied to the machine.
GroupPolReg.txt - Copy of the Group Policy Registry Key.
HCUpdate.log - Hardware Compatibility Update Log.
Hotfixes.txt - Registry entries for the hotfixes applied to the machine.
HyperThread.txt - File that tells if the processors in the machine are HyperThreading capable.
IELocation.txt - Copy of the registry entry of the install point of IE.
IIS*.log - IIS Log file for whichever version is installed on the machine. - Copy of the Image File Execution Options registry key.
Internet_Settings_Key.txt - Registry entries for the Internet Settings information provided through IE.
InternetExplorerReg.txt - Copy of all the necessary keys for IE in the registry.
MountedDevices.txt - Copy of the Mounted Devices Key from the registry. - Copy of the Mounted Devices Key from the registry.
Net.txt - Networking information file.
NetSetup.log - Log of events when joining a domain.
NI.txt - Network Statistics log.
NtBtLog.txt - If boot logging enabled this is the log file for it.
Perf_All_INI.txt - All Perf Counter INI file.
Perf_SC.txt - SC.EXE output for Perf devices.
PerfIni.txt - Copy of Perf.ini for Counters file.
PolIEReg.txt - Copy of the IE Polices from the registry.
Print.txt - Registry of Print Keys.
PrintDrivers.txt - List of all Printer Drivers installed and versions.
Printkey.txt - Registry of Print Keys.
Process.txt - Text log of currently running applications.
Progress.txt - Log that MPS Reports updates to track how far it has gotten.
PStat.txt - Currently running applications, and drivers.
QProcess.txt - TS Processes per User.
Quser.txt - Currently logged in users of the TS.
Qwinsta.txt - Currently logged in users of the TS with Handles.
Recovery.txt - Registry entries for creating memory.dmp. - Session Manager log.
Setup.log - Current Setup.log on the machine in the config directory.
SetupAct.log - Setup Activity log.
SetupApi.log - Setup Log file.
SetupErr.log - Setup Error Log File.
SetupLog.txt - Setup Log file.
Spool.txt - Text file of printer drivers installed.
Startup.txt - Copy of all of the startup information from the registry.
System32_DLL.txt - Version and checksum of DLL files in the System32 directory.
System32_EXE.txt - Version and checksum of EXE files in the System32 directory.
System32_SYS.txt - Version and checksum of SYS files in the System32 directory.
System.txt - System Event log in TXT format.
TapeDrive.txt - Output of TapeDrive.vbs with Tape Drive information.
TermServer.txt - Copy of all the Terminal Server keys from the registry.
Tlist.txt - List of all current Processes and Sub Processes.
Tsoc.log - TS Log file.
Uninstall.txt - Registry information for installed applications.
Upgrade.txt - Log of upgrade progress.
Vminst.log - Log from Virtual Machine installation.
Vssadmin.txt - Volume Shadow Copy information file.
Wiadebug.log - Windows Imaging Log.
Wiaservc.log - Windows Imaging Service log.
WindowsUpdate.log - Log file created by Windows Update Service.
Winmsd.nfo - NFO format of Winmsd.
Winmsd.txt - TXT format of Winmsd. In NT 4 environments this will be %ComputerName%.TXT.
Winnt32.log - Log of events when Winnt32 was run.
Wsdu.log - Windows Update Log File.
Misc.txt - Environment Variables.
Sched.txt - AT Scheduled events.
OEMINF.LOG - Simple Dir of the Systemroot\Inf folder for OEM INF files.
PFSYS.CSV - List of Driver Files (SYS) in the Program File Directory.
PFSYS.TXT - List of Driver Files (SYS) in the Program File Directory.
DrWtsn32_LocalSystem.log - Dr Watson log for Local System Services in 2003 only.
QFECheck.txt - List of all hotfixes applied.
Directory_Service.evt - If machine has DC Roles then this event log will be pulled.
DNS_Server.evt - If machine has DNS installed then this event log will be pulled.
File_Replication_Service.evt - If machine has FRS installed then this event log will be pulled.
SchedlGu.txt - List of Scheduled Tasks in Task Scheduler.
IUHIST.XML - Windows Update Log.
BRNDLOG.TXT - IE Branding Log.
Signup.Log - IE Signup Log
Install.ins - IE Install Instruction file.
TXTSETUP.SIF - Setup Information File.
SVCPack.LOG - Service Pack Installation Log file.
WUhistv3.log - Windows Update Log file.
UNSignedDrivers.TXT - List of UnSigned Drivers installed on the machine.
SSDSetup.TXT - Compaq SSD Installation Log file.
ModemDet.txt - Modem Detection Log file.
mmdet.log - Modem Detection Log file.
userenv.log - Help Center Update log file.
iuident.txt - Windows Update Log file for IE.
ADVPackExt.Log - Advaced Package install log.
DirectX.log - Direct X install log.
NTCompat.TXT - NT Compatibility before upgrade log file.
Compat.TXT - NT Compatibility before upgrade log file.
SigVerif.TXT - Signed Drivers Verification file.
com+.log - Com+ Configuration file.
ProductID.TXT - Dump of the Product ID from the registry

All these reports will paint a good picture of the state of your machine and help the support engineer save some time so they can resolve your case as fast as they can. Once you run this applet, it will do it's thing, save all the files into a folder on your local machine (on my machine and probably yours "C:\WINDOWS\MPSReports\Setup\Reports") and will even zip them all up into a cabinet file for sending over in one go.

MPS Reports is available is available from your Local Microsoft web site - its an ideal tool in the support techies arsenal.