GitHunt
SH

ShayanFiroozi/FluentSysInfo.Core

Provides the accessibility to the various System Informations with Fast Response caching mechanism ๐Ÿ’ฏ

FluentSysInfo.Core

with-coffee
Nuget
Code Smells
Maintainability Rating
Security Rating
Bugs
Vulnerabilities
Lines of Code
Duplicated Lines (%)
Reliability Rating
GitHub License

FluentSysInfo.Core Provides the accessibility to the various System Informations.


Whats is special about FluentSysInfo ? ๐Ÿ‘

FluentSysInfo uses an internal caching machanism called 'Fast Response'.


Getting the System Information could be a huge I/O load and makes your app slow ! Specially when your are requesting a Disk , Partition , CPU information , Running Processes , Installed Services or etc ...


The Fast Response feature is designed to deliver the information almost immediately after requesting a system infomation ๐Ÿ‘Œ


Features ๐Ÿ’ฏ

Supported System Information :


โœ” Date Time Info
โœ” OS Info
โœ” Main Board Info
โœ” BIOS Info
โœ” CPU Info
โœ” Physical Memory Info
โœ” Disk , Partition And Drive Info
โœ” Network Interfaces Info
โœ” Graphic Card Info
โœ” Running Processes Info
โœ” Windows Services Info


How To Use โ”

It's really simple to use the FluentSysInfo.Core :


  • Example for the Physical Memory (RAM) Info โฌ‡


Console.WriteLine(new FluentSysInfoCore().GetSystemInfo(FluentSysInfoTypes.PhysicalMemory));

And the result from the FluentSysInfo.Core would be something like this :

{
 "Caption": "Physical Memory",
 "Description": "Physical Memory",
 "Name": "Physical Memory",
 "Manufacturer": "04CB",
 "SerialNumber": "2B960400",
 "Tag": "Physical Memory 0",
 "FormFactor": "8",
 "BankLabel": "BANK 0",
 "Capacity": "8589934592",
 "DataWidth": "64",
 "InterleavePosition": "0",
 "MemoryType": "0",
 "Speed": "2133",
 "TotalWidth": "64",
 "Attributes": "2",
 "ConfiguredClockSpeed": "2133",
 "ConfiguredVoltage": "1200",
 "DeviceLocator": "ChannelA-DIMM0",
 "InterleaveDataDepth": "0",
 "MaxVoltage": "1200",
 "MinVoltage": "1200",
 "SMBIOSMemoryType": "26",
 "TypeDetail": "128"
}
{
 "Caption": "Physical Memory",
 "Description": "Physical Memory",
 "Name": "Physical Memory",
 "Manufacturer": "04CB",
 "SerialNumber": "55960400",
 "Tag": "Physical Memory 1",
 "FormFactor": "8",
 "BankLabel": "BANK 1",
 "Capacity": "8589934592",
 "DataWidth": "64",
 "InterleavePosition": "0",
 "MemoryType": "0",
 "Speed": "2133",
 "TotalWidth": "64",
 "Attributes": "2",
 "ConfiguredClockSpeed": "2133",
 "ConfiguredVoltage": "1200",
 "DeviceLocator": "ChannelA-DIMM1",
 "InterleaveDataDepth": "0",
 "MaxVoltage": "1200",
 "MinVoltage": "1200",
 "SMBIOSMemoryType": "26",
 "TypeDetail": "128"
}

  • Example for the OS Info โฌ‡


 Console.WriteLine(new FluentSysInfoCore().GetSystemInfo(FluentSysInfoTypes.OperatingSystem));

And the result from the FluentSysInfo.Core would be something like this :

{
 "Status": "OK",
 "Name": "Microsoft Windows 10 Enterprise|C:\\Windows|\\Device\\Harddisk1\\Partition3",
 "FreePhysicalMemory": "9428600",
 "FreeSpaceInPagingFiles": "2479588",
 "FreeVirtualMemory": "9278148",
 "Caption": "Microsoft Windows 10 Enterprise",
 "Description": "Removed! ๐Ÿ˜Ž",
 "InstallDate": "9/30/2022 1:36:54 PM",
 "CSName": "Removed! ๐Ÿ˜‰",
 "CurrentTimeZone": "210",
 "Distributed": "False",
 "LastBootUpTime": "3/21/2024 6:56:09 AM",
 "LocalDateTime": "3/21/2024 11:39:42 PM",
 "MaxNumberOfProcesses": "4294967295",
 "MaxProcessMemorySize": "137438953344",
 "NumberOfLicensedUsers": "0",
 "NumberOfProcesses": "222",
 "NumberOfUsers": "2",
 "OSType": "18",
 "SizeStoredInPagingFiles": "2490368",
 "TotalVirtualMemorySize": "19224724",
 "TotalVisibleMemorySize": "16734356",
 "Version": "10.0.19045",
 "BootDevice": "\\Device\\HarddiskVolume10",
 "BuildNumber": "19045",
 "BuildType": "Multiprocessor Free",
 "CodeSet": "1252",
 "CountryCode": "1",
 "DataExecutionPrevention_32BitApplications": "True",
 "DataExecutionPrevention_Available": "True",
 "DataExecutionPrevention_Drivers": "True",
 "DataExecutionPrevention_SupportPolicy": "2",
 "Debug": "False",
 "EncryptionLevel": "256",
 "ForegroundApplicationBoost": "2",
 "Locale": "0409",
 "Manufacturer": "Microsoft Corporation",
 "MUILanguages": "{en-US}",
 "OperatingSystemSKU": "4",
 "OSArchitecture": "64-bit",
 "OSLanguage": "1033",
 "OSProductSuite": "256",
 "PortableOperatingSystem": "False",
 "Primary": "True",
 "ProductType": "1",
 "RegisteredUser": "Shayan",
 "SerialNumber": "00329-00000-00003-AA310",
 "ServicePackMajorVersion": "0",
 "ServicePackMinorVersion": "0",
 "SuiteMask": "272",
 "SystemDevice": "\\Device\\HarddiskVolume12",
 "SystemDirectory": "C:\\Windows\\system32",
 "SystemDrive": "C:",
 "WindowsDirectory": "C:\\Windows"
}

  • How to enable the Fast Response feature ? โฌ‡


 FluentSysInfoCore fluentSysInfoCore = new FluentSysInfoCore();

 fluentSysInfoCore.AddFastResponseAgent(FluentSysInfoTypes.InstalledServices, TimeSpan.FromSeconds(5));
 fluentSysInfoCore.AddFastResponseAgent(FluentSysInfoTypes.RunningProcesses, TimeSpan.FromSeconds(5));
 fluentSysInfoCore.AddFastResponseAgent("CIM_Display", TimeSpan.FromSeconds(5));

 fluentSysInfoCore.StartAllFastResponseAgents();


  • How to use a custom WMI class name ? โฌ‡


 Console.WriteLine(new FluentSysInfoCore().GetSystemInfo("CIM_Display"));

And the result from the FluentSysInfo.Core would be something like this :

{
 "DeviceID": "DesktopMonitor1",
 "Name": "HP EliteDisplay E221 LED Backlit Monitor",
 "PixelsPerXLogicalInch": "96",
 "PixelsPerYLogicalInch": "96",
 "Status": "OK",
 "Caption": "HP EliteDisplay E221 LED Backlit Monitor",
 "Description": "HP EliteDisplay E221 LED Backlit Monitor",
 "Availability": "8",
 "ConfigManagerErrorCode": "0",
 "ConfigManagerUserConfig": "False",
 "PNPDeviceID": "DISPLAY\\HWP3061\\5&132B4D04&0&UID4352",
 "SystemName": "Removed! ๐Ÿค˜",
 "MonitorManufacturer": "HP",
 "MonitorType": "HP EliteDisplay E221 LED Backlit Monitor"
}

Known Issues โ€ผ

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FluentSysInfo.Core is an open source software, licensed under the terms of MIT license.
See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution file FluentSysInfo.Core.sln

FluentSysInfo.Core solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FluentSysInfo.Core solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FluentSysInfo.Core Project File.


Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! But FluentSysInfo.Core welcomes and appreciates any contribution , pull request or bug report.


Buy me a coffee for more coding effort ! โ˜•

BuyMeACoffee

If you would like to financially support FluentSysInfo.Core, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.