Query Tool Change Log
=====================

Notes:
======
Sometimes when running the Query Tool you may see just a black blank window
appear (or disappear quickly), if the black window does not change to the 
QT progress window, close the window and re-run the QT.  This sometimes
happens not sure why but it to do with the decompression routine, will try to
fix this at some point.

On some BIOS dates, such as Lenovo for one brand, sometimes the BIOS data is not 
read correctly, not sure if this a fault with WMIC or that the actual BIOS has 
some non standard letters that cannot be shown. This is just for information 
and does not affect the running of the Query Tool.

Your MSDM key/Table information is NOT shown in the saved report, same with any
product key, even the Serial tag, as mentioned many times, this is for privacy 
reasons and if you need to post in the main thread or private message the
report text file if any problems need to be addressed.

The QT like other MRP programs do NOT 'phone home' or send any data to any
server on the web. All data shown/or saved is stored locally on YOUR computer
ONLY.

All virus warnings are false-positives, it is purely due to the way the MRP
programs are compressed/compiled. Also because of the way AntiVirus programs
work, (they cannot read the internal data so they flag them as unsafe).

If you obtained any MRP programs from anywhere other than the MDL forum then 
there is no guarantee that the programs are 100% safe - unless the hashes are 
a match to what is shown on the MDL download links. Most don't so be very careful 
if you obtain the files from non MDL valid sources!

================================================================================ 
02nd Aug 2023 125.0
===================

This will be the last version of this Query Tool as it now getting very long in the tooth!

Plus the newer GUI QT will take over the helm, it is faster, may not show as much information as this version but the data shown in the GUI version is the most relevent and will be added to over time.

There has been many updates to this old Query tool and many candidates with the changes made presented for the beta testers.

The list is many and mainly boring internal code tweaks as OS's progressed etc.

The next changelog will be for the GUI_QT which starts soon.

================================================================================ 
29th Sep 2022 124.0
===================

+ Updated DMI checking routine to be more efficent at special queries for some specific brands, 
such as Aorus and Packard Bell etc.

+ When a NVidia graphics card is detected there is a bit more information for that type, such as:
Is GeoExperience installed or not, OptIn/Out / Telemetry is fully disabled etc. 

+ Fixed issue with variable creations.

+ Added Clevo brand updated DMI checks.

+ Moved Wifi adaptor information to the Network Adaptor section.

+ Various internal code updates and old code removal.

================================================================================ 
05th Aug 2022 123.0
===================

+ Added the discovery of the installed 'DISM' version{s} plus any installed ADK/SDK versions.

+ Added a new check for the 22H2 upgrade experience, it will show if the hardware is compatible 
or list what is not. Flags for Green {OK}, Orange {Failed}, Red {Blocked} are hopefully shown 
along with some other information regarding the OS check process.

+ Detects and shows some VC++ installs but only from 2010 and above.

+ Shows Target Release: Version and other Information {such as if locked to a build etc}.

+ Shows if allowed to download updates over a metered connection or not.

+ Now shows the RAM's manufacturer name (if available).

+ Some log parts have been moved to new positions for clarity.

+ Various other bits done that I not have any notes on what was done, but the main changes are 
listed above.

Note some results may not be accurate due to the changes in some later CU's that can affect the 
results displayed. Also the RAM manufacturer name and or serial numbers may also be incorrect 
as the results are just read from the WMIC results.

================================================================================ 
14th May 2022 122.0
===================

+ Added current theme, {when testing}, WallpaperStyle value, such as Center, Span etc.

+ HVCI {Enable virtualization-based protection of code integrity} status.

+ CPU Family Data will only be a numeric value as the database is not accurate with 
the text information due to rapid changing data.

+ Added checks for insider 'FlightSigning' mode within the BCD and registry queries.

+ Various internal code updates.

================================================================================ 
30th Mar 2022 121.0
===================

+ Fixed a 'few' internal bugs!

+ When Windows 11 is detected, the InSpectre program used to check for Meltdown and 
Spectre is auto disabled as it not fully compatible with the newer OS just yet.

+ Added the TPM's Vendor name if a TPM is detected, if the name is newer than in 
the checking list then a numeric value will be shown instead.

There maybe a few other bits done but cannot remember, but should make for a 
better result.

================================================================================ 
15th Jan 2022 120.0
===================

+ Fixed DMI parsing issue so that the order in which detection is performed will 
hopefully be more accurate for OEM Brand found.

+ Added SMBIOS version information. The CPU's Family value is dependent of this to 
pick the order within the database. Sometimes it can get it wrong because the database 
is not 100% yet. On Virtual PC's the Family data along with other CPU information may 
be shown as 'unknown' or not at all as this is caused by the VM's CPU configuration.

+ Various internal code updates.

================================================================================ 
01st Dec 2021 119.0
===================

+ Updated several routines to give better/faster results. **

+ Tweaked Computer Up-Time to be clearer for hh:mm:ss display.

+ CPU data is cleaner with no double MiB/Mhz denoters, that was due to two 
routines working together and confusing the results.

+ Added CPU Family - this may not always be accurate due to incomplete data 
for the internal database. Some AMD CPU's may not be shown in a Family group.

+ Added extra note for Intel CPU's that later 9th Gen and above will have 
internal mitigations against Meltdown and Spectre which are not detected 
with the current version of InSpectre.exe (#08) so it reports that the 
Meltdown 'patch' is not enabled.

+ System Drive's Partition data has been improved for the detection of the 
BusType and other factors. **

+ Slight improvement for Graphics card data, the Video RAM part may show 
better results when more than 4GiB VRam is present.

+ Licensing channel results should hopefully be more accurate when KMS/MAK 
systems are in use for the OS activation status. **

+ Improved the Anti-Virus name detection so that duplicate names are ignored.

** = With scripting help from abbodi1406 these sections have been improved.

v118.1 - Previous Summary
=========================
+ Fixes a few missed WMIC replacement routines so that CPU WinSAT scores are 
now shown correctly.

+ Fixed some CPU information that did not always show, ie L2/L3 cache etc.

+ Fixed Windows License information when using the alternative routines.

+ Other small code updates.

================================================================================ 
16th Nov 2021 118.0
===================

+ Various internal code adjustments have been made to prevent crashes on non-latin 
based languages.

+ Updated detection for Windows 11 so that it will show 11 instead of 10 on some 
Edition/Name entries. This may change later if m$ update the Registry/Kernel at 
some point in time.

+ Major re-write for specific sections/routines that used WMIC due to m$ removing 
the command from later Windows 11 builds (Insider/Dev at present). The older OS's 
that still have WMIC in the QT will operate as it used to, but if WMIC is not detected 
then the QT will use the alternative routines to get the same information. Note some 
data my not be shown or is slightly different this is due to either no alternative 
routine available or the data is not in a valid format.

Note that due to other OS internal changes some data may be presented in a alternative 
way.

================================================================================ 
31st Aug 2021 117.0
===================

+ Added more info and checks for TPM that shows the specification version in use 
first and then other data after, {major, minor, revision}, also, if available, 
the TPM Manufacturer/ID.

+ Bitlocker protection status on the system drive will be shown, if present.

+ If any current Win 11 'bypass' registry tweaks are in use then they will be 
shown as Yes/No results.

+ Displays Powershell's policies for running and/or Scripts.

+ Other internal code updates done and some rewording or extra info for results.

================================================================================ 
06th July 2021 116.0
====================

+ Added checks for Windows 11, some elements may still say Windows 10 because the 
Kernel has not been fully updated by Microsoft so the results are what is obtained 
from the Registry or via WMIC etc.

+ Added more error checking to prevent crashes, although cannot guarantee all 
events will be prevented.

+ Checks for TPM, SecureBoot etc bypass use for Windows 11.

+ Many internal code tweaks too boring to mention.

A lot has been done to the Query Tool but most notes was deleted and sadly i 
cannot remember what was done in detail. But a few fixes for the odd crash has 
been done that should allow the QT to function better...

================================================================================ 
24th May 2021 115.0
===================

+ Tweaked a few little internal code areas.

+ Added DotNet.exe (.NET CORE v5 runtime) version info, if detected.

+ Added experimental checking for SLIC v2.6 for Server 202x etc.

This is mainly a interim release which addresses some cosmetic issues.

================================================================================ 
12th Apr 2021 114.0
===================

+ Added a fix for the ReleaseID/Display version for later Windows 10 Builds such 
as 20Hx/21Hx etc. Will show both, only if they are available to show. On some 
Insider/Preview OS's it may show Dev etc for the short Display Version.

+ Added 'OS Media Boot Installation' line that will show if the OS was a 'Clean' 
or a 'Upgraded' installation. Upgrade could mean from a previous OS ie 7 to 10 OR 
Build to Build,. Due to code complications the routine has been set to show only 
the previous/last upgrade. This is only information as it could be subject to 
user editing.

+ Fixed a issue that sometimes the 'VL/KMS Capable/Permitted' result was set as 
'No' when it should of been 'Yes.

+ Various internal code tweaks to improve results.

================================================================================ 
08th Mar 2021 113.0
===================

+ For Windows 10, the Query Tool will attempt to add an exclusion to Defender so that 
the QT's work folder is ignored during testing. You may have to restart the QT if the 
Defender exclusion has been added. 

Note that Defender is getting quite aggressive and at times will totally ignore any 
exclusions added, either by scripts or via its own GUI!

+ Fixed KMS data not showing correctly, now it will show for all supported OS's. This 
mainly affected the OS and not Office installs.

+ Added the internal code name for Windows 10 kernels, such as Redstone etc.

+ Adjusted code to detect a SSD or HDD - it may still show the latest NVMe drives 
as HDD, hopefully not as the new routine double checks the OS's results.

+ Some wording/information entries changed slightly.

+ Various code improvements.

================================================================================ 
05th Feb 2021 112.0
===================

As several things have been adjusted/fixed over the past month or two not all 
information on what has been done is listed this time.

+ Fixed a crash on certain hardware under Vista/7 Kernels when detecting the 
Graphics adaptor, was rare but it has now been sorted.

+ Updated the routine on Vista/7 Kernels which detects the RAM Type such as 
DDR etc. If the new routine cannot determine the results exactly it will then 
revert to the older WMIC detection. Some results are not shown for VM's and 
other problem brands like HP/Compaq to prevent false results.

+ Various code changes has been made to help speed up processing and the odd 
spelling mistake was fixed too.

================================================================================ 
21st Dec 2020 111.0
===================

+ When checking the Graphics card data the QT will check for non Latin based 
Languages and adjust to use the WMIC {w} method only as it is more Unicode 
compliant than the VBscript method. The Vbs method will be used for Latin 
based Languages unless there is some problem in which the QT will switch to 
the WMIC method instead. Both routines give the same basic information so 
the important data returned should be sufficient, either method used cannot 
read more than 4096Mib VRam so they will say something like '4,096 MiB or 
above' in those scenarios if the VRam amount is greater than or equal to 4 GiB.

+ Added more Office 'ClickToRun' {C2R} information, if present.

+ For the Windows Scripting Host {WSH} this now shows if the 'DisplayLogo' 
registry entry has been changed to '0' so that no logo/banner info is show 
at the top when a script such as VBscript or JScript is used etc. Majority 
of the time it will be shown as either Enabled or Not Defined depending on 
which of the OS's default system is used.

+ Various code adjustments and spellings sorted.

================================================================================ 
10th Oct 2020 110.0
===================

+ Updated the VBScript {Ref:v} that obtains the graphics card information, if there 
is an error with adapterRAM ie non existant then the vbscript will exit forcing the 
WMIC {Ref:w} routine to gracefully obtain what it can. On rare devices some graphics 
card data for a specific adapter may not show due to the way the routine need to 
error check, so for those rare events one or more graphics adapters may not be shown.

+ If the AdapterRAM cannot be converted then you will see 'xxxxxxx Bytes' in the 
Video Memory line to show what actual bytes value was returned when using the WMIC 
method. This is a last resort as sometimes the convertion process can get confused, 
or a AntiVirus has removed some of the QT's external programs/scripts.

+ Various internal code updates and error checking for other areas of the QT have been 
done which may take a little longer to process some sections. 

Many thanks to @Carlos Detweiller for their time and patience when testing the various 
methods and QT's while sorting the errors with the VBScript for a rare but awkward dual 
graphics adapter{s}.

================================================================================ 
11th Sep 2020 109.0
===================

+ Added a new Service 'State' routine to work with all OS Languages, as before 
certain results was not always in English.

+ Added Defrag Service state as requested by a few people, this uses the above 
routine to determine the actual state regardless of Language.

+ Updated Graphics Memory routine(s), the VRam may still be incorrect with values 
returned via the OS's API/WMIC systems when above 4 GiB. The display routine will 
cope with values up to 32 TiB, sadly the results from the OS are not 64 bit. All 
values returned for the VRam are rounded up or down to nearest amount.

+ Other various internal code updates.

Thanks to all those that helped test this while in the RC stages.

================================================================================ 
27th Aug 2020 108.0
===================

+ Adjusted the memory unit display suffix to show KiB, MiB, GiB etc.

+ Updated the OEM Consumer/Server versions line with commas to look clearer.

+ Updated the AntiVirus name detection, it still may display a wrong name but 
that is a failure of the WMIC's api.

+ Updated the Graphics VRam value routine to hopefully be more 'accurate' however 
the api used has some limitations and so it does not split the physical and shared 
data amounts, the value could be shown with, or without, either amounts.

+ Various internal code optimizations.

================================================================================ 
12th July 2020 107.0
====================

+ Shuffled some result lines to be more comprehensive and 'together'.

+ Added Defender's 'Auto Quarantine' status if it is set or not.

+ Minor tidy up of the code.

Note some graphic card memory information may still not show the correct amount 
on some internal or external ones. This is still an on going operation to obtain 
that data better.

================================================================================ 
08th June 2020 106.0
====================

+ When the Query Tool has completed there will be TWO logs saved to the Desktop, 
one being the usual 'safe to post' version and the new 'PrivateCopy_QTvxxx.xxxxx' 
log which shows all keys, serial numbers etc - NEVER post this log anywhere as it 
may contain sensitive data.

+ Updated various routines to be hopefully more efficient and removed some old
no longer required code.

+ Added Defrag task{s} statuses, shows if the task{s} are enabled/ready etc.

================================================================================ 
12th Apr 2020 105.1
===================

+ Fixed a save location glitch in that the QT may not save the report to the users' 
desktop. Now the QT will check for the 'Desktop' folder regardless of Language or 
spelling, if the folder was renamed etc, and then if that still fails to give a 
result the QT will save the log on the root of the SystemDrive (C: D: etc), you 
will see a line in the QT display where it has saved to or if there was any error. 
Many thanks to @migascalp for informing me of this glitch. There is an indicator 
on the title bar/log header if a location was found and used or an error will 
show.

+ Updated the routines that check for data via WMIC system calls to hopefully 
return the results in English so the comparison routines work as before if the 
results was non English then the routine using the calls may fail to pick up the 
data and either ignore the information or it could confuse the actual results.
Many thanks to all those that tested the beta LT1/LT2 QT's.

+ Added VMware Version data if Vmware is present in the installed OS, not 100% 
perfect as it only a test to see if possible to obtain a file's version also 
it depends on if the file is installed in the default install location.


================================================================================ 
08th Apr 2020 105.0
===================

+ Fixed a few cosmetic items in wording/spelling etc.

+ Fixed a cosmetic glitch when the device is not a Virtual Machine in that it may 
of shown a registry read error during scanning of the DMI/SMBIOS section at approx 
73% progress. This did not cause any wrong data to be detected just that i forgot 
to ignore that part of the code when a VM is not detected.

+ Added bitlocker status under the System Drive area.

+ If a Virtual Machine is detected the Max Sockets for the Memory Information 
are virtual and not physical and may not be shown in the report/onscreen display 
because they may not be shown correctly.

+ Optimized code slightly.

================================================================================ 
12th Feb 2020 104.1
===================

Interim release to fix a possible glitch with the active Power Plan detection on 
some languages. There is a glitch which i cannot fix at this time in that on laptops 
the active power plan may not show or is shown as 'OS Default or Customized' this is
to cover the odd behaviour that the QT cannot 'see' the hidden plans that m$ have done.

Also added new GeoID data to help for future debugging when the ISO/Image's Language 
was changed or a different Locale/Keyboard setting was used during oobe to the native 
OS Language. 

================================================================================ 
06th Feb 2020 104.0
===================

+ Added Power Plan data, it will only show standard plans not custom ones so 
only Balanced, High or Ultimate Performance and Power Saver ones others are 
ignored.

+ Added Localized Language information ie what the OS is currently set to. 

+ Fixed some spelling errors.

+ Various other code improvements.

================================================================================ 
11th Jan 2020 103.0
===================

+ Adjusted the Insider/Preview routine to only show if 3 points can be matched 
to establish if the build is actually a preview one, this change was due to the 
changes that m$ have made which can make checking for the type harder.

+ Removed the data line about 'Branch Readiness Level' as it is no longer currently 
used as such.
 
+ Some slight code tweaks here and there.

Mainly a small interim update. 

================================================================================ 
12th Dec 2019 102.0
===================

+ Added new brand to the detection routine: Huananzhi 
 (thanks to @lazymind for the information).

+ Tweaked the Windows Volume Licensing checking routine slightly.

+ Some re-wording here and there.

================================================================================ 
29th Nov 2019 101.0
===================

+ Updated SLIC detection routine.

+ Added StorageSense Policy data, this will show if enabled and if the download 
folder section is enabled and if so how many days for auto deletion. Win10 RS2+ Only.

+ A few other code tweaks to tidy up or enhance current routines.

================================================================================ 
24th Oct 2019 100.0
===================

Finally reached the 100th release! 

Due to changes in the Insider/Preview OS's it may not always be possible to detect 
if the installed OS is indeed a Preview version.  Other details should be OK it is 
just the newer Preview versions which are changing how it is detected as one.

+ Updated the MSDM routine so that it should detect the Brand name within the Table 
again and be more accurate when detecting a valid MSDM key etc. Now uses four ways 
to find the data required.

+ Added information about the Edition type:

1} Created Virtually =  Basically those not usually found in any original M$oft 
 Consumer/Business ISO/ESD -- unless you 'create' that specific Edition. 

2} General = Normally available Edition not created by the User.

3} Other Types include General, HoloLens, China Related/Government, Teams etc.

+ Added extra memory information: Part and Serial numbers for each slot, if it 
is present, the Serial number will not be shown on the saved report for 
security reasons.

================================================================================ 
18th Sep 2019 99.0
==================

+ Will now show if Windows 10 has either the Feature or Quality Updates has been 
denied/disabled or enabled {=default}.

+ Shows the status of the 'Windows Firewall', if it is enabled or disabled etc.

+ Shows the CPU0's Microcode data.

+ Updated Reason Codes.

+ Some internal code re-optimization.

================================================================================ 
19th Aug 2019 98.1
==================

+ Bug fixed the Volume Key Management glitch, thanks @abbodi1406 for the code fix.
 This should now show correctly if the KMS part was used - if the OS is not activated 
it will say 'Not Used.' and you will see the reason why text above it.

QTv98.0 is still OK for normal use it is only if you use a Volume/KMS OS that it will 
probably give some wrong data about the VL Key Management as 'Not Used' by mistake.

================================================================================ 
18th Aug 2019 98.0
==================

+ Added WinSat scores, (if available), under the 'Graphics Adaptor' section. If no 
driver is installed or 'WinSat Formal' has not been ran then you will see a message 
about it.  You can open a administrator cmd window and type "WinSat Formal" without 
any quotes and press enter, wait until the processing has completed and then re-run 
the QT to see the results. Windows 8.x/10 the 'D3D gaming score' is not shown as it 
is not used for the new OS's (it presets to 9.9). For older OS's such as Win7 you 
should then see all the scores.  

+ Added 'Detected Security' under the 'Miscellaneous' section this will hopefully show 
the name of any security installed such as Windows Defender, Eset etc. The name is what 
WMIC finds and may show something slightly different to what you might expect, such as 
'ESET Security' for 'ESET NOD32'. It is what the AV software provider has named it. Also 
this section should give the 'state' of the WinDefender service - if 'Enabled/Running' 
is shown this means Defender is active, if shown as 'Disabled/Not Running' that usually 
means it has been disabled or it could of been uninstalled via 'other' methods.
 
This Security Section will not show if:
  
 a} Vista/Server2008 is installed due to a different method required to 'see' 
 that information.

 b} There is a problem obtaining any named security suite due to any corrupt or 
 invalid AV installations.

+ If Windows Key Management is not used ie MSDM/SLIC/HWID etc is used then the 
wording has been changed to 'Not Used' instead of 'Not Detected' as before.

+ Various re-wording and internal code optimizing done.

================================================================================ 
21st Jul 2019 97.1
==================

Interim update.

+ Hopefully fixed the cosmetic glitch whn Office is activated and using KMS it would 
say that 'The error text is not in database' or similar.

+ A few small internal code tweaks.

================================================================================ 
11th Jul 2019 97.0 
==================

+ Updated the headers to separate certain sections clearer. 

+ Moved some sections and text into new placements.

+ Added more MS Office information, (under its new header), such as the Stock Keeping Unit ID (SKU ID), 
Globally Unique IDentifier (GUID) used for checking, reference type, if 32/64 bit Office was installed, 
last 5 digits of the product code and any error codes/reason text. The Office Error Code Database will 
expand as new codes are added/found.

+ Some code optimizations.

================================================================================================== 
11th Jun 2019 96.0 
==================

Released as v96.0 as quite a bit of internal changes have been made.

+ Adjusted the Meltdown/Spectre results to reflect that AMD CPU's are not prone to Meltdown 
and so only Spectre data is shown for those processors if detected. The header information is 
auto-adjusted for Intel/AMD and other CPU types.

+ Fixed the Product Key Channel data which did not always show, also moved that to a new line 
to allow for future expansion.

+ The MAC Address is now partially shown on the saved report, the first three numbers 
(Manufacturer) and the very last number to allow identification but not enough to make it 
easy to 'spoof'.

+ Processor information: If more than one CPU is detected then the results shown are for 
the first one only.
 
+ Various code optimizations and a some rewording done here and there.

================================================================================ 
04th Jun 2019 95.0 
==================

+ Fixed a strange bug with Enterprise/Education etc Editions that are KMS capable 
which may show the KMS data by mistake when no valid key, (or the default OS key), 
was used.

+ Reduced System Tray/Taskbar flickering by 98% during running of the Query Tool.

+ Fixed rare 'hang' in certain scenarios.

+ Extra Meltdown/Spectre data, depends on the OS's registry status, if available 
then you may see the CVE/Retpoline etc data. Most is done via Windows Updates and 
may not show anything on this line.

+ Code tidy up and some new rewording on results.

================================================================================ 
30th Apr 2019 94.0 
==================

+ Added TimeZone Data. It may show the current bias if plus/minus a certain time 
also if Daylight Saving Mode is in operation or not, this last part depends on 
if your country uses that method of time changing.

+ Updated some code sections and a small tidy up.

================================================================================ 
03rd Apr 2019 93.0 
==================

+ Added Dirty Shutdown Counter, if the OS was shutdown incorrectly such as:

a) Power outages.
b) Pressing the on/off button to force switch off.
c) Pressing reset.
d) Failing Hardware.
e) Having the 'force' shutdown tasks/services registry tweaks set to less than 10000 (10 seconds).

If anything causes the OS to detect a problem then this counter will show the number of 
times this happened. On some OS's this counter number may not show or have N/A displayed.

+ Updated MSDM key detection and data routines, it should now be more resilient to corrupted 
 tables or incorrect key data. Plus give more information regarding the MSDM table data if it 
 is present.

+ Checks if the OS has the 7GB reserved flag set, for Windows 10 (19h1+) only.

NOTE: If a build for 19H1 is after 18362 it may not be shown as an Insider/Preview OS.

================================================================================ 
01st Mar 2019 92.0 
==================

+ If the Windows Script Host, (WSH), is not enabled, for whatever reason, you will 
see a note that it is disabled and that some data will show errors. The QT will NOT 
re-enable the WSH that is for you to decide.

Without the new error checking the QT will either crash (rare) or just put lots of lines 
about the WSH is not enabled etc. This check was done this to keep the display tidy. 

The QT will attempt to show the majority of the information, as other methods are used to 
obtain the data. Mainly it is the calculation routines are reliant on WSH for CPU L2/3 
Cache, system RAM also MS Office detection but that part will use another checking routine 
if needed which is not as reliable.

+ Fixed a bug if the CPUID was not defined, usually with Virtual Box (VBox) VM's. Thanks 
@Carlos Detweiller for letting me know.

+ Other code tidying done.

================================================================================ 
27th Feb 2019 91.0
==================

+ Hopefully fixed the Video Ram {VRam} zero bytes issue that would happen on some 
graphics cards, {mainly NVidia}, due to a processing error. New method to obtain and 
display the data has been devised.  If using the default Microsoft display driver it 
may say Zero bytes or no VRam shown this is not a fault with the QT it is how the 
driver works. Also updated Adaptor information for errors etc.

+ Updated some text areas to explain things clearer.

+ Updated database information.

+ A small code tidy up.

================================================================================ 
11th Feb 2019 90.0
==================

Sorry for yet another release so soon. But i not like to have something not working 
properly.

+ Hopefully now at last fixed the odd glitch under Windows 7 if a Graphics adaptor has 
1GB and below 4GB vRAM fitted. It was not a 'bug' within the Query Tool but one that 
was within the older OS itself. Even MSInfo32.exe would show incorrect data!

+ Added message if a graphics adaptor is not 'active' at time of the test that the QT 
is unable to show the extra information.

================================================================================ 
11th Feb 2019 89.0  PULLED Due to error checking failure for VRam Zero bytes.
================================================================================ 

10th Feb 2019 88.0
==================

A quick fire release.

+ Using a new routine to detect the Graphics Adaptor(s), if it is Active or not, the VRam amount, 
Bits Per Pixel, resolution, also the Driver date and Driver version, (if the adaptor is Active). 
Sadly no Colors information at the moment as correctly parsing the 64 bit result is problematic.

A note about VRam amount(s) this may also include any assigned shared system RAM in use.  WMIC does 
not split this amount from the GPU's onboard memory so it is assigned all together. To find out the 
individual amounts you will need to use another program to determine that information.

Vista/Server 2008 may not show the graphics data in full or some parts may be missing this is due to 
that OS's strange kernel calls and results.

+ Slight code tidy up to remove redundant code and external script/exe files, makes the QT slightly 
smaller in filesize.

================================================================================ 
08th Feb 2019 87.0
==================

+ Added Windows 10 {RS5+} Clipboard History status detection.

+ Updated Insider/Preview build detection and information about Rings etc. Due to changes 
in the newer Preview Builds the QT may not always detect it being an Insider OS, hopefully 
this will be sorted once m$ have settled on a standard IP build registry entry.

+ Updated MS Office detection routine, should be better at finding 2019 and C2R types.

+ Added Trim detection for SSD's (Win 7+), {Experimental} -- can state on W10 if enabled/disabled for 
NTFS and/or ReFS.

ReFS can be used within certain W10 for drives already formatted or Editions which allow ReFS formatting 
etc, this is why it is shown.

You can see for yourself on W10 open a command prompt window and type (or copy/paste):

fsutil behavior query disabledeletenotify

Then see the results. Parsing the results to cover the new wording and the old was a bit tricky and is 
why it is 'experimental' as cannot be 100% sure due to changes in the W10 Builds.

+ Fixed (hopefully) the graphics memory data sometimes showing a negative amount.

================================================================================ 
28th Jan 2019 86.0
==================

+ Updated 'CPU Max Clock 'to show in x.xx xHz format, be it Mhz/Ghz/PHz or EHz or if something 
fails to default the the older xxxx Mhz format.

+ Few other little internal fixes.

+ Updated Reason Codes.

================================================================================ 
25th Jan 2019 86.0
==================

+ Updated DMI checking again to prevent a specific crash that can happen if the DMI 
data contains invalid characters.

+ Extra filtering on critical areas to prevent odd results in the text output.

+ Added Branch Readiness Level, this may not always show if the values are not set within 
the OS. This usually indicates the current branch/channel such as CB/Semi Annual [Targeted] 
or CBB/Business/Semi Annual it can sometimes indicate Insider/Preview channels.

+ Added CPU Max Speed data.

+ New code added to be ready for 19h1 builds.

+ Code restructure in some areas.

================================================================================ 
14th Jan 2019 84.0
==================

+ Updated DMI entry detection routine.

+ Added Data Execution Prevention {DEP} status, if available.

+ Added new Reason Codes.

+ Updated error checking.

+ Tweaked data checking for motherboard/dmi info etc to prevent a potential crash or strange 
characters in the results, thanks to @abbodi1406 for letting me know and the fixes required. 

+ Code tidy up to remove excess spaces from displayed text.

================================================================================ 
24th Dec 2018 83.0
==================

+ Fixed percentage values for system memory and drive space used results to be a bit 
more accurate.

+ Fixed Graphics Adapter RAM result that sometimes shown a negative value.

+ Fixed DMI entries with extra spaces and odd characters that could crash the QT.

+ Added Parameters - To use them open a Command Prompt as Administrator where the 
QT exe is located. 

The parameters are:

	/OR = Override Memory Blocks, warning use at your own risk as it can cause the QT 
	to abort with errors or give false results in the case of Virtual Machines etc.

	/SL = Saves the QTLog.Log to your desktop for easy access if needed to post in the 
	MDL Forum MRP thread.

The parameter letter case is unimportant and you can even use both together in any position.

+ Updated some Reason Codes for clearer results.

+ Tweaked the Extended Memory routine to attempt to prevent fatal errors, I cannot catch 
them all but it is a lot more resilient than before. 

+ Small tidy up and optimization of the code.

================================================================================ 
13th Dec 2018 82.0
==================

+ Fixed a crash that happened on HP/Compaq, (maybe others), when processing the 
extended memory queries. Have added checks and any other problematic manufacturers 
can be added to the list to prevent the QT from exiting.

+ Added simple PowerShell host running check which will exit the QT if detected 
running.  This also prevents odd behaviour and false results.

+ Now shows the Serial Number of the HDD/SSD if available - not all makes give this 
information so the line may not show. **

+ Added network adapter MAC Address/Name where possible, not all adaptors give the results 
and so not all will be displayed. **

+ Added Computer UUID, this may or may not be useful to some as it does provide a way to 
detect the computer on a network or Server. **

+ Added Graphics adapter memory information for each adapter (if available), have limited 
the checks to two adapters only as it gets way too complicated otherwise to keep track of 
the masses of data returned via WMIC. So if you have more than 2 adapters then the data 
shown will be for the first two found only. 

** This information is not shown in the saved reports for security reasons.

Most of the new data is experimental and may or may not be shown depending on the OS 
installed and the WMIC/Registry results that can be obtained.

================================================================================ 
06th Dec 2018 81.0
==================

+ Updated header lines to be more clearer on what each section it is for.

+ Updated the routine for activation and License channel detection it can take a 
few seconds so please wait while when it obtains the data.

+ Added current .theme in use it is experimental and may not always show depending 
circumstances as the information is stored in various locations within the registry.

+ Hopefully fixed a small glitch with Language detection.

+ Separated the Meltdown/Spectre results into their own section.

+ Few other things but can't remember as was distracted with an abort glitch on the 
MRP code which had to be sorted asap.

================================================================================ 
27th Nov 2018 80.0
==================

+ Hopefully fixed the glitches with VL/KMS activation information for Windows and if 
MS Office installed. They should now show the correct data. Many thanks to @abbodi1406 
for the help with seeing where i went a bit wrong and to get me on the right track for 
Windows 7 etc.

+ Few other code improvements.

From v79.1
+ Added more motherboard information - if it is available.


================================================================================ 
24th Nov 2018 79.0
==================

+ Added new clearer Locale details. Uses latest Microsoft's Locale database information.

+ Added 'Last Boot' time/date.

+ Added 'Device Role' - such as Standalone Workstation, Server etc.

+ Added 'CPU Cache' information (if available) for L2/L3.

+ If using Primary BIOS chip - this is more for those with switchable bios's.

+ Motherboard Maker (if present), Version/Revision and Security Status, this last one is usually None 
or Unknown, it depends what the results give back, if the board has some specialized features etc.

+ If KMS or other VL activation method is used for Windows activation you will now see the method 
ie KMS, Active Directory etc also the activation time interval and renewal internal. They are usually 
shown as 120 mins, 7 days (10080 Mins) but may change to reflect any changes you altered within the 
KMS emulator's parameters.

+ If MS Office is installed and using KMS you may also see the reactivation time information.

+ Minor update to internal structure and reduction of duplicated code within sections.

Note: Not all results will be shown, as it depends on the OS, Hardware or if a Virtual Machine 
is being used. Some results may look strange, it is what is returned by the OS calls.

================================================================================ 
20th Nov 2018 78.0
==================

+ Redesign of the GUI and saved reports, added section headers.

+ Reworded line headers.

+ Should now show the CPU's 'Manufacturer ID String' such as GenuineIntel etc.

+ Updated Memory checking routines, some parts may not show on some OS's due to 
WMIC results not present. Hopefully should fix some of the odd aborts on certain 
makers ie HP/Compaq and Lenovo.

+ Added new 'QT' EXE icon.

+ Restructure of some sections of internal code.

================================================================================ 
09th Nov 2018 77.0
==================

+ Fixed the Total/Free memory which sometimes gave a Undefinable result, usually because 
the calculations and WMIC returns was invalid. Hopefully this is now resolved and gives 
more accurate data, such as 15.9 GB, 940 MB etc. If the result is 0 then for some reason 
WMIC cannot obtain the required information.

+ For Memory type you will probably see what type of RAM is fitted such as DDR(1,2,3,4), 
depends if that information can be returned.

+ Extra Memory information, shows what is populated in each slot on the motherboard. The 
wording depends on the motherboard and WMIC returned results, it could be XMMx, DIMMx etc, 
also shows the amount and speed (if available).

+ Reworded some areas to show clearer information.

+ Not all information will be shown if a Virtual Machine is used this is due to random 
data that can cause problems. Also some won't be displayed/saved as it depends on the OS 
installed as some WMIC calls are not present on the older OS's.

+ Code reshuffle and removal of redundant parts no longer needed.

================================================================================ 
24th Oct 2018 76.0
==================

+ Added Performance Rating to the InSpectre results which should show Good, Slower 
and Variable depending on the results which can affect CPU performance.

+ Added Max Capacity Per Slot, this may not be 100% accurate but is what the results of 
the WMIC calls give with a bit of calculations.

+ Added Video Adapter RAM total - may not be 100% correct but it is what is determined by 
the WMIC call and some calculations. For more than one GPU installed it should combine the 
total amount. Some onboard video devices may say 1MB or 8MB, even VM's may present the same 
depending on how the amount is defined within the bios etc. If the RAM cannot be determined 
then the line will not show.

+ Updated Reason Code text and added a few new ones to the database.

+ The QTLog.log will now only be deleted on completion when you close the GUI screen, it will 
be in the %Temp% folder until you either move it or the GUI is exited.

+ Restructure of the code slightly.

================================================================================ 
06th Oct 2018 75.0
==================

+ Fixed reported glitches (hopefully!)

+ Minor cosmetic changes here and there within the code.

+ If MS Office detected the reports will show the version such as 2010, 2013 etc also 
the activation state of the product.  If no Office detected the line will not show. This is 
experimental and may have not always detect the correct details or even if MS Office is installed.

+ Code tidy up.

+ The QTLog.log file will now only delete once the GUI is closed, while the GUI is on the 
screen you can access the QTLog file. If the QT crashes the Log will still be present, it 
will be auto deleted on the next run of the QT.

- Removed RS5's October Release information due to the current build having problems, so it will 
say just 1 for the time being.

================================================================================ 
02nd Oct 2018 74.0
==================

+ Release Identifer, this shows a usually 4 digit reference such as 1511, 1703, 1809 etc.

+ Portable Mode this is for a 'live' type OS such as Windows to Go etc, however the QT 
may not run on those type of OS's due to limitations of .Net etc.

+ OS Installation Type now shows Client {Non Server} for consumer OS's and Server {xxxx} 
for Servers the number within the { } are the number such as 2008, 2012R2, 2016, 2019 etc.

+ Licenses Allowed, this is usually set as 1 but may change for Servers with 'seats' etc.

+ HyperVisor Present, Yes or No - shows if a Virtual Machine is in use.

+ PC System Type, this is like the chassis one but a different WMIC call, this should show 
such as Desktop, Workstation etc. It also depends on the Motherboard maker's grading some 
may say your board is a Workstation model but it may not have the classification certificate 
and may be then classed in the BIOS as a desktop.

+ Part of a domain, if your PC is connected to a network and is part of a domain then this 
will most likely say Yes.  Generally it will be No.

+ Code tweaks here and there and moved about some section parts. Also added some extra 
error checking.

+ Last minute addition - shows RS5 {17763} as October 2018 Baseline Release.

================================================================================ 
26th Sep 2018 73.2
==================

+ Fixed a permission issue. Thanks to @ZerOx16x for letting me know.

- Removed 'CPU Socket Designation Type' as results are random and not reliable.

+ Slight code restructure in the display/save report routine.

+ Enhanced debug log even more.

================================================================================ 
24th Sep 2018 73.1
==================

Hopefully fixes a glitch in that the QT could crash for no reason in the Display
creation routine. Always make sure that Defender or other AV has not grabbed any 
file(s) that the QT uses.  If needed make an exception rule for the '%TEMP%\QTL' 
folder.

+ Enhanced QT logging (if needed when the QT crashes) - Found in %TEMP% folder.

+ Updated License channel data.

================================================================================ 
23rd Sep 2018 73.0
==================

+ Added CPU Socket Designation Type.  Should show LGA1155 etc although some results 
may look a bit strange, but it is what WMIC returns.

  If nothing shown it may mean the result is unavailable via WMIC. 

  VM software may return CPU#000 this is normal as unless you edit the configuration 
data of the VM then it will use default values.

+ Added new information to some of the Reason Codes.

+ Now shows 'License' type correctly such as Retail[/HWID], OEM_DM[/HWID], KMS etc.
  The Retail/HWID and OEM_DM/HWID means when the key has been converted to a Digital/Store License.

+ Minor code restructure.

================================================================================ 
19th Sep 2018 72.0
==================

+ Added Release ID for Windows 10, shows such values as 1511, 1703, 1709, 1803 etc.

+ Changed information about Max Memory Capacity to indicate that 4GB or below could mean 
per slot. This is due to the WMIC call having two return values which is confusing, so 
this is to say why it may look incorrect when the amount shown is less than expected.

+ Re-Added the boot drive health check, this is only for Windows 10 and will not show 
for any other OS's as results are not reliable.

Results:
========
OK            = Seems to be all ok.
Warning       = Detected some errors or failures - S.M.A.R.T problem? Needs checking!
Un-Healthy    = Detected errors or issues that require checking.
Unknown/Other = This should not usually be shown, possible errors or result malfunction.

================================================================================ 
10th Sep 2018 71.0 (fixed)
==========================

Hopefully with help from @abbodi1406 the Pshell 4.x.x routine now works better than before.

================================================================================ 
09th Sep 2018 71.0
==================

Fixed 'missing operand' error when detecting .Net framework mainly affects Win7. 
Thanks go to @abbodi1406 for bringing this to my attention. 

If spaces are detected in the Computer Name then the Query Tool will auto exit 
to prevent a crash or possible OS 'hang'. You will need to remove any spaces 
within the Computer Name, not just for the QT to work but also to prevent other 
errors within your Networking.

Small code tidy up.

================================================================================ 
04th Sep 2018 70.1
==================

Due to a glitch with VirtualBox in which the extended Memory queries are giving 
invalid return results the QT will now automatically bypass that section to 
prevent the QT from terminating. You will see a message saying that the area is 
being bypassed. Many thanks to @Carlos Detweiller for letting me know about this 
problem and for testing this 70.1 version which now works to prevent the error.

Also there is a simple check for the ComputerName to see if spaces are detected 
within the system variable, if so you will see a note about it that the QT may 
hang or terminate.

================================================================================ 
03rd Sep 2018 70.0
==================

Improved SLIC checking, should now say if the data is invalid/dummy etc better than 
before.

Some cosmetic changes to certain lines/text.

Code tidy up.

================================================================================ 
27th Aug 2018 69.0
==================

 Fixed a little glitch with Memory information, some computers the results can be 
a bit odd such as 0 Max Capacity and Slots being 0! So if the returned results are 
now below the thresholds then they won't be shown.

 Added Motherboard Chassis type if data is available.

 Code tidy up.

================================================================================ 
17th Aug 2018 68.0
==================

 Added extra Memory information such as if ECC or not, max Memory capacity the m/board 
has and how many Memory sockets/slot. Thanks to @JanCerny for the heads up on the info.

 Added detection for a WiFi adaptor, should say if present or not, SSID code and the 
service status - running, disabled, stopped etc.

 If for some reason the GUI Reader is not working due to AV removal then the old display 
output will not show certain lines of information.  All lines will be shown on the saved 
report regardless and may also be more spread out.

A few code tweaks nothing exciting to write about.

================================================================================ 
09th Aug 2018 67.1
==================

Fixed a glitch with VMware and VirtualBox DMI detection thanks @Enthousiast for 
inadvertently finding it!

No other brands or HyperV was affected.

No other code changes done.

================================================================================ 
07th Aug 2018 67.0
==================

  Fixed a few little glitches with the DMI detection routines, should now be more 
accurate. It would miss checking area #04 and use #05 if present. 

  .Net 4.x.x routine enhanced, now shows the revision.

  Hopefully fixed any extra spaces shown in CPU name, GPU Pri/Sec names and the 
System Drive's internal name, sometimes it may get an extra space appear, it is only 
cosmetic and not affect the results.

================================================================================ 
29th July 2018 66.0
===================

Another shorter rewrite of the BIOS/DMI detection for specific brands which caused 
a few confused results.  Intelbras - which is Idealmax this theme will be shown as 
Idealmax, MRP however should theme it as Intelbras as before. More information about 
this change is detailed in the MRP archive's ChangeLog.

Intel branded boards should now be correctly themed as Intel and not Intelbras as 
before.

Adjustments to internal code for the work-around above and some little changes to 
the log output for display and saved versions.


================================================================================ 
26th July 2018 65.0
===================

  Updated log output slightly.
  
  Also added the CPU's Revision number to the data shown, which is different to the 
CPU ID Code may be of use to someone at some stage.

  Fixed the HyperV VM detection routine which in turn updated the DMI checking area too, 
thanks to @ZerOx16x for notifying me of the glitch and for testing the various 'fixes' 
until the problem was 'solved'.

  Fixed the Asus <> ATComp issue which sometimes happens, this is because "ASUSTek Computer INC." 
and "AT Computers" have the word 'Computer' - this confused the results. Hopefully now fixed. 
Thanks @MMIKEE and @Enthousiast for letting me know and testing this new version.

  Almost a total rewrite of the DMI checking routines. This new upgrade should make fixes to other 
DMI close matches when they arise faster.

================================================================================ 
26th July 2018 64.0  
===================

SCRAPPED.

================================================================================ 
18th July 2018 63.0
===================

GUI Version only this time as seemed to have cured various issues.

Fixed the strange '0 is unexpected at this time' error.

Fixed some text alignment issues in the display window. Saved report was ok.

Updated the Graphics Adaptor information section, sometimes it would give wrong 
information in the results due to confused results returned by the routines. Now 
if something isn't right it will not show that line or show N/A for some results.

Code tweaks to speed up some areas. Slight tidy up of code in some parts too.

Updated the GUI display to pick the right font for the OS installed, for Windows 10 
kernels it will use Consolas, for other OS's it will use Lucina Console or if they 
are not present then it will try Courior font then if nothing can be used a message 
box will appear to say why.  The desktop saved results will still be made regardless 
if the GUI cannot be shown.  Also if an Antivirus removes the GUI reader program then 
the QT will attempt to use the old display method.

================================================================================
12th July 2018 62.5
===================

There are now two versions within the QT archive/folder. You can use either they 
both give same saved results.

MRPQTGvxx.x.exe is the new GUI version, you are asked if you wish to use the new 
GUI or the old display. If the GUI reader is missing -- if an AV removes it then 
the QT will auto switch to the old display method.  Also the GUI checks what OS is 
installed and adjusts the font. Experimental a moment. 

Consolas for Windows 10 kernels and all others will use Lucinda Console if neither 
can be used then it will try another font then give up and show a message box that 
it failed to find a suitable font to use.

MRPQTNPvxx.x.exe is the Notepad version.

  The QT now will display the last 5 digits of the product key in the saved report, 
this is to help with KMS or other issues for other threads on MDL.

  Updated Reason Codes database.

================================================================================
08th July 2018 62.4 (new method)
================================

This version attempts to use Notepad to display the results, do NOT post this 
display version as it may contain your MSDM or other keys/information. The QT will 
then automatically save your post-able report to the desktop.

If Notepad is not available for what ever reason then the QT will revert back to 
the older command window method and ask if you wish to save the post-able report.

This new method will allow expansion later. 

There will be added checks done that if notepad can't be used then the old method 
will not show all the non critical information on the command window one but the 
saved report will, except for any MSDM or other product keys/serial Tag codes etc.

================================================================================
08th July 2018 62.3
===================

62.1 and 62.2 pulled as not fixed. 

You are now asked if you want to use the new GUI or old way for displayed results.

Hopefully this fixes the glitch on Windows 7 (on some languages) that the GUI does not 
show and either gives an error or is a blank display. Checks for certain Fonts available.

The saved report will be created on your desktop regardless unless an Antivirus 
(Defender usually) removes certain files required.

The QT should also revert to the old style DOS box window if the new GUI cannot 
be used. But this is experimental and may fail to work due to the hybrid GUI.


================================================================================
05th July 2018 62.0
===================

The QT is now a hybrid, main part is still the same, however the display output 
that used to show in the main window is now shown in a GUI window that can be 
size adjusted and scrolled if required and not restricted to a command window.

You are no longer asked about Fast/Normal mode, it runs as Fast always now this 
is to get to the display as soon as possible.

Also saving of the results/MSDM key info is now automatic to your Desktop, this 
was done because the new hybrid way could cause the GUI to show a blank screen 
which was not the desired result! 

The new display will allow for extra information to be shown (scrollable) when 
is is added at a later time as the only restriction now is 200 lines which i 
done on purpose as i doubt that the QT will have that much info!

A bit of a code tweak and due to the new GUI system the file size is a bit larger 
but the new system will allow expansion.

The saved result text file is the same as it was before with no keys or anything 
personal data related.

If for some reason (Antivirus grabbing files) and the GUI cannot be used then the 
QT will use the old display method instead, unless the AV has really messed things 
up!

================================================================================
01st July 2018 v61.0
====================

Updated Reason Codes with some new text information to cover certain KMS situations.

Added 'MRP Version Used' information this will show N/A if MRP was not used when the
OS was installed and the data for the version used if it was.

Changed wording on the Meltdown/Spectre lines slightly to mention varients of Spectre.

Small tidy up of the code base.

================================================================================
26th June 2018 v60.0
====================

Updated Reason Codes with some new information ones for activation and other 
errors if detected.

Some code cleaning done to speed up running.

No other changes made as the QT is pretty much working as intended.


================================================================================
12th June 2018 v59.0
====================
Fixed a a small glitch that on the saved output it not always show the V/7 info.

Few other little code tweaks done to correctly show MSDM method used (if detected) 
and if any Grace time remaining for Vista/7 and Servers.

================================================================================
31st May 2018 v58.0
===================

Fixed a few alignment issues on the Display results, it will also now show the Valid 
Server results however this will usually be shown as 'Un=Listed' if no valid SLIC for 
a Server is present.

Adjusted text for User Languages to now show:

UILN = User Interface Language Name and Code ( example: en-GB {2057/809h} )
ULOC = User Locale ( example: en-GB )
ULNG = User Language Value* ( Example: ENG, FRA etc )

*May sometimes not show due to language restrictions.

These values are returned via the OS to reflect what settings was used at the first selection 
screen of the Windows Setup where it asks for Language and keyboard layout etc.

================================================================================
27th May 2018 v57.0
===================

A slight refresh of v56.0 but with extra checking if 'possible' License tampering
is detected. This only shows on the saved report due to display space shortage.
Rare this line will be shown unless the QT cannot determine the Status which can
indicate tampering of system files for the License area.

Also added DMI checks for AORUS (Gigabyte) and OMEN (by HP).

=================================================================================
17th May 2018 v56.0
===================

A refresh from v55.0, shortened the CPUID to last 6 digits.

Removed DISM check for Edition as it sometimes caused problems on older OS's the
results was only cosmetic data.

Small tidy up of code for display text.

================================================================================
26th April 2018 v55.0
=====================

Basically a refresh with a new program to hopefully obtain the Legacy/UEFI and 
MBR/GPT information, which if WMIC fails to pick out the right wording/results 
for non Latin Character Set Languages.

OS Architecture should now be correct and show x64 or x86 for all languages.

There may be a few areas where the native language shows in the results but 
these should not affect the main results.

Also added extended Edition information on the saved report which will also now show
CompositionEdition and DISM results.

A few other tweaks here and there.

Now using latest Gibson Research's InSpectre.exe (#8 at time of compilation) for
the Meltdown/Spectre results.

================================================================================
05th April 2018 v54.0
=====================

Some internal code tweaks done. Hopefully fixed the bugs for OS Architecure and GPT/MBR
on non Latin character languages. As the results from WMIC was in native language which 
confuse the parsing of the returned data. It may still not be 100% as some system calls
are hardcoded to the language of the OS. Sadly very little can be done about that.

Added Compiled date.

Now shows CPU Sockets (skts) instead of CPU Physical Amount which now matches the
wording used with the Windows Task Manager.

Adjusted Display output slightly to free up some space. Same data shown but some
may be on another line.

QTLog enhanced, this only is needed if the QT crashes before completion, it can
be found in the %Temp% folder.  No personal information is in this log only
diagnostic data to help find out where abouts the QT failed at. 

If the QT fails open the %Temp% folder and post the file to the MRP thread so it 
can be checked and then the QT can hopefully be fixed to prevent the crash. When 
the QT completes fully this log is auto deleted. It is also deleted prior to a 
new run of the QT if the log file was present.

================================================================================
28th March 2018 v53.2  (combines 53.0 and 53.1)
===============================================

Minor changes to code as follows:

Addressed an issue with Windows 7 that has a NVMe SSD fitted for the boot device in
which the QT would think it is a HDD.

Added Meltdown/Spectre checks, a simple one line will be shown to say what has been
detected on the display report, on the saved report there may be other information
shown about a BIOS/Microcode patch etc.  This routine uses the InSpectre.exe program
from Gibson Research via its command line to obtain the result codes which then are
converted into the text you see. 

v53.2: This has be extended with new result codes/text, there was a mistake in the 
example scripts, I have found which bit caused the confusion and corrected the
routine in the QT so that it now should be correct.

================================================================================
22nd March 2018 v52.0
=====================

A few small tweaks done to the code, nothing to write home about.

One being if the PC is in Grace Allowance (Win Vista/7/Servers) then you will now
see the remaining days/time.  Windows 8.x and above this is ignored as they do not
have a 'trial' allowance as such.

Now shows the amount of CPUs (or physical CPU's) fitted usually 1 for a consumer
device, it should show more for those with more than 1 cpu fitted to a motherboard such
as server type boards.

Little rewording here and there.

Changed saved text file name from Results to QTxxx_Report.txt nothing changed otherwise.

================================================================================
13th March 2018 v51.1
=====================

Fixed a small glitch if the License Status returns a nul or out of range result
which indicates a possible Token Store corruption or other problem with the
activation status. Thanks Enthousiast for bringing that to my attention.

Also fixed a small bug that at times would show errors when checking the Drive
Controller section under some OS's (7 usually) if the controller is not present.

Added {I} or {S} after the Controller Mode text to indicate if it was SCSI or IDE
that returned the result.

No other changes to code.

================================================================================
06th March 2018 v51.0
=====================

Quite a bit of a makeover on the display and saved reports layout, this is to 
make space for extra lines of information when needed later.

All the information is the same just the headers that have changed appearance,
a few bits have been added to other lines to give the extra space this is only 
on the display version, the saved report is more spread out.

If the QT is used on a Virtual Machine then the CPU Virtualization bit will
usually be 'No' as a VM is using VT-x and so would not show it available.

A few tweaks to the code to make everything fit and align.

================================================================================
04th March 2018 v50.1
=====================

Fixed NVMe/SCSI/SAS detection.  Thanks go to JanCerny for their help in testing
the new routines.

For older SATA in IDE mode it will show ATA/IDE can't fix this as the OS calls
do not show the differences between SATA(IDE) and IDE/ATA/PATA modes because
SATA will emulate IDE hence why it will show as IDE/ATA/PATA.

No other changes made.

================================================================================
03rd March 2018 v50
====================

Some code reshuffling done nothing to write about it same code just moved a bit.

New bits added:
===============
CPU Identity code is now shown in full this is to help determine a CPU branch such
as Skylake etc.  The important part of that code is the last 5 digits or so, as WMIC 
returns the entire length i left it as it was instead of shortening it and risk 
chopping off important numbers.

Installation Type, this will mainly be 'Client' but on Servers it will say 'Server'.

CPU VT Enabled, this is a simple WMIC check to see if Virtualization is enabled within
the CPU itself, it will say No if it is not or if the CPU does not support it. AMD cpu's 
may have a different wording and hopefully the WMIC call will pick that up and still say
if it is enabled or not.

If either the above new lines not show it is because of either an error occurred or that
WMIC has not returned a valid value.

Due to space being limited on the screen display some items are added to other lines. 
However on the saved report there is more space so it will be less messy also any extra 
information can be shown on the saved report.

================================================================================
23rd February 2018 v49.1
========================

Added the SKU code number that will be displayed next to the SKU name also next
to the Registry Edition - this is in case a SKU cannot be found in the database(s)
it can be added later.

Boot drive's file system such as NTFS, ReFS etc is shown.

================================================================================
22nd February 2018 v49
======================

Tweaked the .Net checking routine, looks neater now.

Added a new WMIC OS Version check (experimental) which hopefully will show the
Version better. If it not detect the Version via the database(s) it will fall back
on the older WMIC results.

Tweaked some text output in the display/saved report, added OS Branch (ie rs3_branch)
etc for Windows 10.

Fixed a bracket issue with DMI results, as some DMI's may have brackets '(' ')' which can
cause either a crash or strange display of information.

Fixed (hopefully) the Edition Switch detection routine.

A few other code changes here and there to tidy some sections up that had test/redundant
code present.

================================================================================
04th February 2018 v48
======================

No major changes as such, a bit of a code tweak here and there.

Adjusted the MSDM brand parse to show any non known brand names, such as ALASKA,
AMI, etc as some MSDM tables are valid but don't have a brand, these are rare
and before the QT would show Undefined and the could ignore the other details.  
So now it will still say Undefined but with the detected name within brackets 
for example: 'Undefined -- {ALASKA}' if any new brands are available then they 
can be added to the brands database when they appear.

================================================================================
21st January 2018 v47
=====================

Added note on screen at start about Disk and CPU spikes during running of the QT 
this is normal.

Added a new SSD/HDD detection program.  If should show SSD or HDD or if something
has gone a bit strange then Undefined will show as a failsafe. Hopefully it works.

Enhanced the MSDM detection/parse routines. Should detect them easier now...

Added PEAQ brand into the database so that it now detects that brands DMI.

A few little rewrites to output text, no longer shows the act# as it usually #11
anyway and with the new MSDM routine it could confuse that line so removed the
text.

Note a few routines are experiental still and may return incorrect results, however
this is the data returned by the Device/OS being queried and it may just be random
data. Nothing i can do about that at present.

================================================================================
07th January 2018 v46
=====================
Hopefully sorted the GPU adaptor glitch on those with more than one GPU installed.
It will only show 2 adaptors to keep code at minimum.
Thanks to MMIKEE for helping test the routine.

A few other little tweaks done here and there and cant think what they are at present
as spent a lot of time on the GPU bit.

Updated the QT.Log output so it can show the 2nd adaptor if present or a space if not.

The above routine is experimental and may get the order wrong, it will be enhanced 
over time to iron out any rough edges.

Due to problems with nothing being standardized for Bpp/Resolution etc I have decided
to no longer show that data on OS's below Windows 8.0 sorry but the time involved
to create/edit a module for each individual OS is not something i want to do. Mainly
because not all adaptors give the information required and causes major problems.

================================================================================
01st January 2018 v45
=====================
Fixed a 'No Instance' cosmetic glitch, thank abbodi1406 for letting me know.

Fixed a crash when on the Display loop section if a result had a bracket or other
non allowed characters, these are now parsed to filter those nasty characters. Thanks
to bhtbht for letting me know and for testing the QT beta's.

New log file is created during the running of the Query Tool and is saved in the
system's TEMP folder.  It is auto-deleted if the QT finished with no crashes. If
the QT does crash please post the file or copy/paste the contents into a reply
in the MRP thread and i will be able to find where it crashed.

Little re-wording here and there.

================================================================================
31st December 2017 v44
======================

The last QT for the year!

Now on Windows 7 the boot drive's Model Name should be shown! Experimental.

It will not show on Vista/Server 2008 as those OS's may not have the system call used
within the OS so to prevent errors/crashes it is ignored for those.

The Model Name (if present) will be shown on its own line for all supported OS's and is
limited to 80 characters due to width restriction of the QT display output. Should be
more than enough!  Depending on the results returned it may show N/A or empty spaces
as this is still experimental code. Early M.2/NVMe motherboards may show the word SCSI
in the drive name, the BusType may reflect the interface but it may also be on the SATA
bus as the early versions was a bit of a test to get the new SSD's to function.

Also if GPT or Secure Boot is detected then a note about the 'BIOS or SLIC ID' may not 
be shown correctly or at all because the way UEFI alters a few things. With a BIOS mod
this can also cause a few glitches with no ID shown too.

A nice way to end 2017! :)

================================================================================
30th December 2017 v43
======================
Before on Windows 7/Server 2008R2 the HDD information was basic, I have wrote
a small program to obtain if the boot drive is a SSD or HDD. Also it should give
the BusType, ie ATA/IDE, SATA, SAS, NVMe, eMMC etc like on Window 8.x/10 does the
only part missing is the drives model name for now without a lot of extra work that
will have to be missing. 

The program is not called for Vista/Server 2008 as I am unsure if it would work and 
not crash the QT, as those OS's are now EOL and not supported by Microsoft I decided 
to bypass those with this new addition. 

If for some odd reason the information cannot be obtained then the basic information 
should show instead, same with Windows 8.x/10 kernels as that uses system API calls 
so as a fail-safe HDD information should show something even if it the old basic data.

Please note the HDD information program for Win7/S2008R2 is experimental and may
crash the QT on some hardware setups. It will not do any damage as it just reads
data and not write anything.

Removed Unicode bits as that was causing the QT to 'hang' during certain sections,
now the date is shown in UTC format MM/DD/YYYY across all languages and no longer
displays the day's name.

Other little re-wording done here and there.

================================================================================
28th December 2017 v42
=========================

Fixed the bios information as best as can be done. Shows Manufacturer, Version 
and Date (UTC format DD/MM/YYYY). If the Bios Date cannot be determined then that
part will not show in the output. You can check if it is wrong by opening a command
prompt (or PowerShell prompt), type in:

WMIC BIOS GET ReleaseDate /value  

Then press enter, if one is present it will show in UTC format.

BIOS or SLIC ID enhanced slightly. Shows Name - ID Number. Not sure of the ID Number
it maybe a date code, reference number or a checksum, not important for the QT.

Fixed a glitch when used on Windows 7 x64 that it would 'hang' on the SLIC
detection.  Thanks MMIKEE for letting me know.

================================================================================
27th December 2017 v41
======================
With help from abbodi1406 with a better method to obtain the correct Edition
regardless of OS or bit type the QT can detect three ways of how it can be shown 
such as Registry/WMIC or Component Based Servicing {CBS}. This covers the new License
switches that can be done with Windows 10.

Few other little tweaks here and there. Lost my notes again!

================================================================================
22nd December 2017 v40
======================
Wow this version has had quite a few changes about in the internal coding!

With huge thanks to s1ave77 for his help in ironing out the glitches with the
latest insider build problems. Also with multiple tests and retests.

Thanks also to Enthousiast for testing the beta QT's.

The majority of the code changes have been for Windows 10 only so for the older
OS's not much has changed as such.

New code added/tweaked to address the Insider Build's new Licensing switches etc.

Time parsing for local time sorted, it now should display the correct format.

OS Version Name will use either registry or via a WMIC call to obtain the required
name depending on the OS installed.

Hopefully detect the new License switch system better too.

On Windows 10, (more so the Insider ones), WMIC will mainly be used to obtain most of
the required information as this is more accurate for this OS. Most Insider builds will say 
'Enterprise' as the Version name because of the new changes that Microsoft has made, however
the QT should now show the correct Edition of your choice you have selected to be installed.

Fixed the AT, part in the W8.x/10 Boot drive information line, now says ATA/IDE, also should 
show AHCI/IDE if can be detected. NVMe/eMMC drives don't seem to return those results.

There is a few other bits done but i didn't keep notes with so many changes that has taken 
place during testing stages - didn't have time!

================================================================================
19th December 2017 v39
======================
New routine for Multi-Processor systems, should show amount of CPU's {x-} after
the CPU name. Also hopefully the right cores/threads.

Added Supermicro brand for dmi checks. Thanks JanCerny for theme files etc.

For Windows 8.x/10 only a bit more information about the Boot Drive. You will
not see this new information on a OS lower than Win8.0 as the API call is not
present so it will be the old info IDE/AHCI etc.

Few other tweaks done.  

================================================================================
15th December 2017 v38
======================

Better routine for detecting the Edition switch there is now three checks
done to make sure it is identified correctly.

Fixed the Switched Edition glitch which sometimes had incorrect results.
Thanks @b01m for your help and testing, added to credits on first post.

Fixed language value ZZZ fault, no longer shows this line if WMIC cannot 
determine the actual alphanumeric value.

================================================================================
12th December 2017 v37
======================

With thanks to b10m for bringing my attention to a glitch in the processing of
the Edition Switch area(s).  This now 'seems' to be sorted.

Also if the Language Value cannot be determined, (it used to say ZZZ), this is now
no longer shown on the display or saved report. Keeps things neat and tidy.

Few other little tweaks done while adjusting the code for the above.

================================================================================
10th December 2017 v36
======================

Added Enhanced SLIC table detection, if there is a table that is not right then
you will see a note in the SLIC Information section a possible reason why the
SLIC is not working to activate.  It may be because there is a dummy/invalid
table present such as a modded bios that has a corrupted part which will result
in activation failure. ie No marker present which means one of the ACPI entries
is invalid.

A few other little tweaks to the code for speed and efficiency more so if the
Fast mode is selected.

Re-Worded a couple of Reason Code text lines to hopefully make more sense than 
the cyptic one that was before.

================================================================================
27th November 2017 v35
======================

Added more Reason Codes (398).

Added check for eMMC and NVMe (experimental).

================================================================================
24th November 2017 v34
======================

Added more Reason Codes that should cover more activation error messages. There
are 376 of them now from the original 90.

On the display screen the Reason Code and Text are on separate lines. The saved 
output is on one line.

Other little tweaks done nothing exciting to write about.

================================================================================
16th November 2017 v33
======================

Version 32.0 was release without a changelog oops!

Some extra speed up tweaks done. 

Adjusted some code about. 

Fixed a variable bug that was not set but checked and ignored.

Fixed a Reason Code Text duplicate word.

=================================================================================
22nd October 2017 v31.1F
========================

Added a speed up tweak, you are asked if you wish to use (F)ast or (N)ormal mode,
fast will whizz most of the screens quickly and take about 10-15 seconds from
answering Fast to the summary screen.  Normal mode takes the usual 30-45 seconds
to complete.

Other than that little else been changed apart from some extra Reason Codes now
at over 90!
=================================================================================

18th October 2017 v31.0
=======================
Added Hampoo brand to database. Thanks Klaustrophobie for informing me of this 
new brand.

Little changes to some of the output text.

Added License Status Reason codes this may help understand when something has
gone wrong with activation or other problem.  Not all codes are present within
the database but the rare ones missing should show the code and how to check up 
on how to find out what it means. Most windows error codes are cryptic at best!

This 'feature' is experimental and is on-going as more codes are added to the 
80+ already added.

A bit of code tidy up and a little reshuffle to allow the new Reason Code system
to work.
 
================================================================================
12th October 2017 v30.3
=======================
Fixed glitch that shown {Possible Loader}/{Emulated?} if the loader was detected
on a dual-boot system when no 'SLIC' was actually present for the current OS being
checked, thanks Enthousiast for finding that 'bug'.

v30.2 was internal testing only.

================================================================================
11th October 2017 v30.1
=======================
Added 'Digital License' note to the License Status area if one is detected.

Removed 'Channel' word from same area as it at times chopped off the wording due
to the padding used to align the text.

No other changes made for this release hence the .1 version.
================================================================================
09th October 2017 v30.0
=======================
Hopefully all sorted for RS3!

Have put in a check for possible edition switch, which will put a note at the 
bottom under summary section if the QT detects a difference with Registry and
WMIC. A simple check that may not always show as it will only detect a switch
done 'on the fly' or by using a upgrade key.

A noticable speed up in sections 70% to 90% have been done and shaves off a few
more seconds of processing. If i disabled all the info screens then the QT would
complete in about 20-30 seconds, but then you wont have any idea what is happening!
So I may add a parameter switch to the QT's exe at some point in the future so you
have a semi-silent, or the full processing information screens version.

Little tidy up of some code plus addition of some new/updated error checking stuff.

================================================================================
02nd October 2017 v29.0
=======================
Changed a few wording bits to show if an Invalid or none present MSDM table, also
if not valid SLIC is present it will now state that one is not detected.

Also added OS Installation Date in the top area, this may not reflect the original
install date/time if the OS has been updated with a later OS such as from RS2 to RS3.
It may display the date of the upgrade.  Cumulative Updates should not affect the
date only a major upgrade of the OS.

It should also be in the correct date format for your location, ie DD/MM/YYY or
MM/DD/YYY etc.  The routine obtains the info from the registry which is in a odd
format, then it converts it into human readable format (hopefully!).

Few other little tweaks here and there done while changing the code about for the
above routines.

================================================================================
27th September 2017 v28.0
=========================
Alphawaves made another new set of tools with internal checks for invalid/valid 
MSDM table results.  Thanks once again Alpha!

The QT now has three ways to check the MSDM table!

Adjusted the text output to show MSDM table checking, it will show Invalid, Valid
or not present depending on results detected. 

If the returned result is invalid then to keep things tidy the value will be set 
as 'Invalid', as technically it is not actually 'present' in a valid form that 
Windows 8.x/10 could make use of for any activation.

A few tweaks here and there also made one of the databases more compact so it 
is now a bit quicker at parsing the data.

================================================================================
24th September 2017 v27.0
=========================
Alphawaves patched the tools used to obtain the MSDM table to allow QT to no 
longer 'hang' or crash. Thanks Alpha!

So now the QT has two ways to detect a dummy or corrupt MSDM. If there is a 
MSDM table detected you will see a line saying if it is valid or not during 
the .Net/Pshell checks stage. If no table present then no line will be displayed.

Tidied up the text output during processing it no longer says Scanning..... as 
you will see the progress stages as it goes through. The Title bar will still
show the percentage as normal.

Other than the above nothing has changed codewise.

================================================================================
19th September 2017 v26.0 Experimental Baseline
===============================================

A fix for the invalid MSDM table which may appear on some OEM boards or if a BIOS
mod has corrupted it in some way.  Thanks to mad_max for bringing this to my
attention, been a challenge to find a work-around but managed it after many hours
of coding/recoding and testing.

If any MSDM table is present it is checked to see if it is valid or not and a little
message is shown to say which.  If no MSDM table is present the check is ignored.

Also a little speed up tweak done while all this testing was in progress so a double
bonus!

When Alphawaves can update the Generic.exe's with a better 'at source' fix then the 
QT will be updated with the newer tools. Thanks Alphawaves for your assistance in 
this rare glitch.

================================================================================
16th September 2017 v25.0 Baseline
==================================
Just a bit of a re-code in some places, nothing fancy just housekeeping stuff.

A few tweaks done to obtain the information better.
================================================================================
12th September 2017 v24.3 Baseline
==================================
Removed the Video Bios date as Windows does not always get the information
correct, more so with Intel onboard graphics controllers.

Have tried several methods but none work so just removed that line totally, its
not required and was only general information. 

The GPU name will still hopefully show correctly.
================================================================================
11th September 2017 v24.2 Baseline
==================================
Fixed a few glitches that may happen when saving the report text file in that
sometimes it mentioned Not saved on report when it should of been Un-Listed. A
simple technical error i will call it didnt cause any problems just may of looked
odd.

Added Powershell versions to the list of outputted details thanks for all the private
messages to add this.  Was a little challenge to obtain all the version numbers in the
correct order.

Few other little speed enhancements, nothing exciting really, just shaves off a few more
seconds here and there. Depends on your computer's speed so some may not see the difference.

v24.1 was an internal test hence the slight bump to 24.2.

Also added the Graphics Card name and bios date, this should obtain the graphics card in use
however you may see Microsoft Basic Driver or similar if you have no driver installed.

Other than a few bits of tidying up nothing else to mention.
================================================================================
01st September 2017 v24.0 Baseline
==================================
Re-wording in a few places, hopefully clearer definition of results.

Removed the SLIC table and Certificate information at end of the saved report 
text file (after the Summary Section), as most is no longer required.  Almost 
all relevant data is already shown. If the SLIC is incomplete or has an error 
the SLIC version may not show correctly likewise if Secure Boot is enabled it 
can confuse the routines for checking.

Made speed improvements in most sections and now the QT takes approx 45 seconds
to complete its processing. Sorry if you are not a speed reader!

Few other boring tweaks made.

================================================================================
17th August 2017 v23.0 Baseline
===============================
Little re-wording in places.

Added Server OS line in the summary section, this will only show if the SLIC and
the Brand name meet a certain criteria, you will then see which Server would be
activated via OEM SLP method within the MRP. See list below.

====================================================================
Brand   SLIC                        Server OS
====================================================================
DELL    2.0, 2.1, 2.2, 2.3, 2.4     2008, 2008R2, 2012, 2012R2, 2016
FUJITSU 2.1                         2008, 2008R2
HP      2.1, 2.2, 2.3               2008, 2008R2, 2012, 2012R2
IBM     2.1                         2008, 2008R2
LaCie   2.1                         2008, 2008R2
WDCorp  2.1                         2008, 2008R2
====================================================================

Fixed a little glitch in the Licensed Channel name area where sometimes you would
see a FindStr error. More so on Windows 8.x. Simple fix, a comma in wrong place!

Added support for the new SKU ProfessionalWorkstation/N for MSDM key, thanks go
to s1ave77 for the new database additions.

Added OS Build and Update Build Revision line, for Windows 10/Server 2016 you will
see the UBR number. On OS's below 10 only the build primary number will show.

Example:
========
Windows 10:
 OS Build Number        - 15063 
 OS Update Build Rev    - 540 

Below Windows 10:
 OS Build Number        - 9600 

Few code tweaks, might be a little bit faster.

================================================================================
=============================== END OF LOG =====================================
================================================================================