Show System Information in the List of Apps


  • Community Moderator

    It would be cool to see some system specs at top of the list of apps like you see it in CCleaner:

    CCleaner_System_Info.png

    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.


  • VulnDetect Team Member

    @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.


  • Community Moderator

    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.


  • VulnDetect Team Member

    @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.


  • Community Moderator

    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.html

    There you see the full discussion and links to the MS Documentation.


  • Community Moderator

    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-getphysicallyinstalledsystemmemory

    In 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-getlogicalprocessorinformation

    So 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...


  • Community Moderator

    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\VIDEO

    There 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 970

    It 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.


Log in to reply