using System; using System.Configuration; using System.Runtime.InteropServices; using System.Management; using System.Text; namespace CPUInformation ... { [StructLayout(LayoutKind.Sequential)] public struct CpuInfo ...{ public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } [StructLayout(LayoutKind.Sequential)] public struct MemoryInfo ...{ public uint dwLength; public uint dwMemoryLoad; public uint dwTotalPhys; public uint dwAvailPhys; public uint dwTotalPageFile; public uint dwAvailPageFile; public uint dwTotalVirtual; public uint dwAvailVirtual; } [StructLayout(LayoutKind.Sequential)] public struct SystemTimeInfo ...{ public ushort wYear; public ushort wMonth; public ushort wDayOfWeek; public ushort wDay; public ushort wHour; public ushort wMinute; public ushort wSecond; public ushort wMilliseconds; } public class SystemInfo ...{ private const int CHAR_COUNT = 128; public SystemInfo() ...{ } [DllImport("kernel32")] private static extern void GetWindowsDirectory(StringBuilder WinDir, int count); [DllImport("kernel32")] private static extern void GetSystemDirectory(StringBuilder SysDir, int count); [DllImport("kernel32")] private static extern void GetSystemInfo(ref CpuInfo cpuInfo); [DllImport("kernel32")] private static extern void GlobalMemoryStatus(ref MemoryInfo memInfo); [DllImport("kernel32")] private static extern void GetSystemTime(ref SystemTimeInfo sysInfo); public string GetCpuID() ...{ ManagementClass mClass = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mClass.GetInstances(); string cpuId = null; foreach (ManagementObject mo in moc) ...{ cpuId = mo.Properties["ProcessorId"].Value.ToString(); break; } return cpuId; } public string GetMainHardDiskId() ...{ ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); string hardDiskID=null; foreach (ManagementObject mo in searcher.Get()) ...{ hardDiskID = mo["SerialNumber"].ToString().Trim(); break; } return hardDiskID; } public string GetWinDirectory() ...{ StringBuilder sBuilder = new StringBuilder(CHAR_COUNT); GetWindowsDirectory(sBuilder, CHAR_COUNT); return sBuilder.ToString(); } public string GetSysDirectory() ...{ StringBuilder sBuilder = new StringBuilder(CHAR_COUNT); GetSystemDirectory(sBuilder, CHAR_COUNT); return sBuilder.ToString(); } public CpuInfo GetCpuInfo() ...{ CpuInfo cpuInfo = new CpuInfo(); GetSystemInfo(ref cpuInfo); return cpuInfo; } public MemoryInfo GetMemoryInfo() ...{ MemoryInfo memoryInfo = new MemoryInfo(); GlobalMemoryStatus(ref memoryInfo); return memoryInfo; } public SystemTimeInfo GetSystemTimeInfo() ...{ SystemTimeInfo systemTimeInfo = new SystemTimeInfo(); GetSystemTime(ref systemTimeInfo); return systemTimeInfo; } public string GetOperationSystemInName() ...{ OperatingSystem os = System.Environment.OSVersion; string osName = "UNKNOWN"; switch (os.Platform) ...{ case PlatformID.Win32Windows: switch (os.Version.Minor) ...{ case 0: osName = "Windows 95"; break; case 10: osName = "Windows 98"; break; case 90: osName = "Windows ME"; break; } break; case PlatformID.Win32NT: switch (os.Version.Major) ...{ case 3: osName = "Windws NT 3.51"; break; case 4: osName = "Windows NT 4"; break; case 5: if (os.Version.Minor == 0) ...{ osName = "Windows 2000"; } else if (os.Version.Minor == 1) ...{ osName = "Windows XP"; } else if (os.Version.Minor == 2) ...{ osName = "Windows Server 2003"; } break; case 6: osName = "Longhorn"; break; } break; } return String.Format("{0},{1}", osName, os.Version.ToString()); } }}