Show System Information in the List of Apps
-
It would be cool to see some system specs at top of the list of apps like you see it in CCleaner:
I think the CPU and the RAM are interesting to see, also the GPU is useful.
So you should show the basic info in one line (like CCleaner does) and show an > icon in front of it to show that the entry can be expanded.When users expand the entry, they see a list with more details.
When I start Speccy, then I see on the summary page the following info:Operating System: Windows 10 Pro 64-bit CPU: Intel Core i7 4790K @ 4.00GHz, Haswell 22nm Technology RAM: 32,0GB Dual-Channel DDR3 @ 799MHz (8-8-8-24) Motherboard: Gigabyte Technology Co. Ltd. Z97X-Gaming 3 (SOCKET 0) Graphics: 4095MB NVIDIA GeForce GTX 970 (Gigabyte) Monitor: Z321QU (2560x1440@59Hz) Storage: 931GB Samsung SSD 860 EVO 1TB (SATA (SSD)) 931GB Seagate ST31000333AS (SATA) 465GB Samsung SSD 840 EVO 500GB (SATA (SSD)) Optical Drives: HL-DT-ST DVD-ROM DH16NS10 HL-DT-ST DVDRAM GH22NS40 Audio: NVIDIA High Definition Audio
Such a list would be very cool, because users have all required information in one place.
-
I found some of these information in the Windows Registry (using Windows 10 Pro x64).
Getting the Processor (CPU) information
Registry-Path: Computer\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0 ProcessorNameString: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
Notes:
- In CCleander and Speccy I see the same string, they just removed the "(R)" and "(TM)"
- If you want to show the number of logical cores, you have to count the folders below the key
Computer\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor
There I have the folders 0 to 7 => 8 logical cores (I have 4 physical cores, but with HyperThreading I have 8 logical cores)
Getting the Video Card (GPU) information
Registry-Path: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinSAT PrimaryAdapterString: NVIDIA GeForce GTX 970 VideoMemorySize: 4188692480
Notes:
For my Virtual Machine (VirtualBox) I get not the same values that are shown in Speccy.
To get the same text, you have to open the following registry key:
Computer\HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEOThere you find multiple values beginning with \Device\Video<N> (where ranges from 0 to all video devices).
On my computer (PC) I have 5 devices (\Device\Video0 to \Device\Video4).
In these values the registry key to the video device is stored.On my computer the value \Device\Video0 contains the following key:
\Registry\Machine\System\CurrentControlSet\Control\Video{8A0B9622-8DD7-11E9-98B2-6245B4EC1490}\0000
If I open this registry key then I see in the Registry Value DriverDesc the name of the video card:
NVIDIA GeForce GTX 970It is now up to you to test if you use the Registry Value PrimaryAdapterString or the Registry Value DriverDesc.
Getting the Motherboard information
Registry-Path: Computer\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS BaseBoardManufacturer: Gigabyte Technology Co., Ltd. BaseBoardProduct: Z97X-Gaming 3
Notes:
Speccy concatines these two values and shows for my system: Gigabyte Technology Co. Ltd. Z97X-Gaming 3
They just delete one comma after "Co."
More information about other values will follow soon.
-
As I promised, here are some more information.
Getting the Memory (RAM) information
Registry-Path: HKLM\HARDWARE\RESOURCEMAP\System Resources\Physical Memory .Translated: ????
Notes:
I read in a forum that the system memory is stored in this key.
Unfortunately this is stored as a REG_RESOURCE_LIST and I have no idea how to handle this data.
But I found a website where you see some screen shots (how this looks in the registry) and how the data can be accessed:
https://www.remkoweijnen.nl/blog/2009/03/20/reading-physical-memory-size-from-the-registry/In the forum I also got the advice that Windows provides an API function named "GetPhysicallyInstalledSystemMemory".
This function returns the amount of physically installed memory in KB:
https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getphysicallyinstalledsystemmemoryIn this topic I also got the reply that the number of physical CPU cores can be read via the API function "GetLogicalProcessorInformation":
https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getlogicalprocessorinformationSo maybe all my examples above (reading values from the registry) can be better done by API functions.
I really don't know what is the best way, I am not a good programmer... -
In the Lazarus forums a user wrote:
You really shouldn't be using the Registry to find system information. Use pre-defined APIs that are designed for that purpose instead.
So here is the link to the forum topic in the Lazarus Forum:
https://forum.lazarus.freepascal.org/index.php/topic,46969.0.htmlThere you see the full discussion and links to the MS Documentation.
-
@OLLI_S Thank you. I talked to our development team and they do use API calls whenever it is applicable, rather than pulling stuff from the registry.
-
In the Lazarus forum topic you find some API functions that return the required system information.
If you have a working prototype of this feature, I am happy to test it on my machines.
-
@OLLI_S We are not currently working on this. The current progress is with respect to improved reporting on deployment of updates and a more "interactive" UI. We are also working on a new agent, that will help with debugging certain issues that happen on a few machines.
-