--- source_files: - Common/DTS.Common.Licensing/SystemInformation/MachineInfo.cs - Common/DTS.Common.Licensing/SystemInformation/ComputerSystemInfo.cs - Common/DTS.Common.Licensing/SystemInformation/MainBoardInfo.cs - Common/DTS.Common.Licensing/SystemInformation/ProcessorInfo.cs - Common/DTS.Common.Licensing/SystemInformation/SystemInformationXSD.cs generated_at: "2026-04-17T16:03:17.835094+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "39aefdb664565404" --- # SystemInformation ### Purpose This module provides hardware identification capabilities for licensing purposes by gathering unique system identifiers from the machine. It retrieves hardware-specific information such as machine name, system UUID, motherboard serial number, and processor ID using Windows Management Instrumentation (WMI), and provides an XSD schema for serializing this system information. ### Public Interface **MachineInfo** (static class) - `static string MachineName { get; }` - Returns the NetBIOS name of the local computer via `System.Environment.MachineName`. Returns empty string on exception. **ComputerSystemInfo** (static class) - `static string SystemID { get; }` - Returns the UUID from `Win32_ComputerSystemProduct` WMI class. Returns empty string on exception. **MainBoardInfo** (static class) - `static string SerialNumber { get; }` - Returns the serial number from `Win32_BaseBoard` WMI class. Returns empty string on exception. **ProcessorInfo** (static class) - `static string ProcessorID { get; }` - Returns the ProcessorID from `Win32_processor` WMI class. Returns empty string on exception. **SystemInformationXSD** (static class) - `static string XSD { get; }` - Returns an XSD schema string defining the structure for system information XML (elements: MainBoardSerialNumber, ProcessorID, SystemID, MachineName; attributes: Version, SystemInformationGuid). ### Invariants - All property getters return empty string (`""`) on any exception, never null. - `ManagementObjectSearcher` instances (`systemSearcher`, `baseboardSearcher`, `cpuSearcher`) are created once as static fields and reused. - WMI queries use `FirstOrDefault()` pattern; if no results are found, an exception will be caught and empty string returned. ### Dependencies - **Depends on**: `System.Management` (for WMI access), `System.Environment` - **Depended on by**: Unclear from source alone - likely licensing/validation components that need hardware fingerprints. ### Gotchas - **Platform limitation**: WMI queries (`System.Management`) are Windows-only; this module will not work on non-Windows platforms. - **Static searcher lifecycle**: The `ManagementObjectSearcher` instances are held as static fields and never disposed, which could cause resource issues in long-running applications. - **Silent failures**: All exceptions are swallowed and return empty string, making it difficult to diagnose WMI permission issues or service unavailability. - **First-result only**: When multiple processors or baseboards exist, only the first is considered. ---