Siticone Logo
Siticone UI
DOCS
v2025.12.15
Docs System Info

Siticone System Info

The SiticoneSystemInfo component is a powerful non-visual diagnostic tool for Windows Forms. It provides comprehensive access to system metrics, including real-time performance counters (CPU, RAM), hardware specifications, network configurations, and security status (Antivirus, Firewall). With built-in async refresh capabilities, it's ideal for building system dashboards, diagnostic utilities, and monitoring applications.

Core Configuration

Control which data points are collected and how frequently they update.

Property Type Description & Usage Example
AutoRefresh bool sysInfo.AutoRefresh = true; Automatically triggers the data refresh cycle based on the RefreshInterval.
RefreshInterval int sysInfo.RefreshInterval = 1000; The time in milliseconds between automatic updates. Minimum is 1000ms.
EnableHardwareInfo bool sysInfo.EnableHardwareInfo = true; Toggles collection of Processor, Memory, BIOS, and Motherboard data.
EnableOperatingSystemInfo bool sysInfo.EnableOperatingSystemInfo = true; Toggles collection of OS version, hotfixes, and uptime.
EnableNetworkInfo bool sysInfo.EnableNetworkInfo = true; Toggles collection of Network Adapters, IP config, and shares.
EnableDisplayInfo bool sysInfo.EnableDisplayInfo = true; Toggles collection of Monitor and GPU information.

Performance Metrics

Real-time counters for system load and resource usage.

Property Type Description & Usage Example
CpuUsage float float cpu = sysInfo.CpuUsage; Current CPU utilization percentage.
TotalMemory long long ram = sysInfo.TotalMemory; Total physical RAM installed in bytes.
FreeMemory long long free = sysInfo.FreeMemory; Available physical RAM in bytes.
MemoryUsagePercentage float float used = sysInfo.MemoryUsagePercentage; Calculated percentage of RAM currently in use.
ProcessCount int int procs = sysInfo.ProcessCount; Total number of running processes.

Hardware Information

Detailed specifications of the machine's physical components.

Property Type Description
ProcessorName string Full commercial name of the CPU (e.g., "Intel Core i9-12900K").
ProcessorCores int Number of physical cores available.
SystemManufacturer string The OEM manufacturer name (e.g., "Dell Inc.", "ASUS").
SystemModel string The specific model number of the machine.
BiosEntries List<BiosInfo> Details about the system BIOS/UEFI including version and date.
StorageDevices List<StorageInfo> List of hard drives and SSDs, including capacity and interface type.

Network & OS

Connectivity status and operating system details.

Property Type Description
OSName string Name of the operating system (e.g., "Microsoft Windows 11 Pro").
OSArchitecture string Bit architecture (e.g., "64-bit").
PrimaryNetworkAdapter string Name of the active network interface.
IPAddress string Current IPv4 address of the primary adapter.
SystemUptime TimeSpan Duration since the last system boot.

Security & Peripherals

Monitor security configurations and connected devices.

Property Type Description
AntivirusProducts List<AntivirusInfo> Detected security software (Windows Defender, 3rd party) and their status (Enabled/Updated).
FirewallRules List<FirewallRuleInfo> List of active Windows Firewall rules (Requires Elevation).
UserAccounts List<UserAccountInfo> Local user accounts present on the system.
Printers List<PrinterInfo> Installed printers and their status (Default, Network, Shared).

Public Methods

RefreshAsync()
// Manually trigger a full data refresh without waiting for the timer.
await siticoneSystemInfo1.RefreshAsync();
GetSystemSummary()
// Retrieve a key-value dictionary of essential system specs.
var summary = siticoneSystemInfo1.GetSystemSummary();
foreach (var item in summary)
{
                Console.WriteLine($"Key: {item.Key}, Value: {item.Value}");
}
ExportToFileAsync(string path)
// Generates a comprehensive text report of all system data.
await siticoneSystemInfo1.ExportToFileAsync("C:\\Reports\\SystemInfo.txt");

Events

DeviceInfoUpdated Event
// Fires whenever a refresh cycle completes (manual or automatic).
siticoneSystemInfo1.DeviceInfoUpdated += (s, e) => 
{
                if (e.IsSuccessful)
    {
        lblCpu.Text = $"CPU: {siticoneSystemInfo1.CpuUsage:F1}%";
        lblRam.Text = $"RAM: {siticoneSystemInfo1.MemoryUsagePercentage:F1}%";
    }
                else
    {
                Console.WriteLine($"Update Error: {e.Error?.Message}");
    }
};

Detailed Usage Examples

Example 1: System Monitor Dashboard

A real-time dashboard that updates UI labels every second.

C# - Real-time Monitor
public void InitializeDashboard()
{
                // Configure component for monitoring
    siticoneSystemInfo1.EnableHardwareInfo = true;
    siticoneSystemInfo1.RefreshInterval = 1000; // 1 second updates
    siticoneSystemInfo1.AutoRefresh = true;
    
                // Subscribe to updates
    siticoneSystemInfo1.DeviceInfoUpdated += (s, e) => 
    {
                // Update UI elements safely
                this.Invoke((MethodInvoker)(() => 
        {
            progressBarCpu.Value = (int)siticoneSystemInfo1.CpuUsage;
            lblUptime.Text = siticoneSystemInfo1.SystemUptime.ToString(@"dd\.hh\:mm\:ss");
            lblProcesses.Text = siticoneSystemInfo1.ProcessCount.ToString();
        }));
    };
}

Example 2: Security Audit Tool

Checks for active antivirus protection and lists installed security updates.

C# - Security Check
public void PerformSecurityAudit()
{
                // Get Antivirus status
                var avStatus = siticoneSystemInfo1.GetAntivirusStatus();
    
                if (avStatus.IsProtectionEnabled)
    {
                Console.WriteLine("Security: SECURE");
                foreach (string av in avStatus.ActiveProducts)
                Console.WriteLine($"Active AV: {av}");
    }
                else
    {
                Console.WriteLine("Security: AT RISK - No active protection found!");
    }
    
                // List recent Hotfixes
                Console.WriteLine("\nRecent Updates:");
                foreach (var update in siticoneSystemInfo1.InstalledHotfixes.Take(5))
    {
                Console.WriteLine($"[{update.HotfixID}] {update.Description} ({update.InstalledOn:d})");
    }
}