Determine operating system and processor type in C#

后端 未结 4 1960
谎友^
谎友^ 2021-02-05 21:03

I want to check what type of operating system i use and what kind of processor. this should be check on run time. i tried using

System.Environment.GetEnvironment         


        
4条回答
  •  悲哀的现实
    2021-02-05 22:02

    Retrieving OS info:

    var wmi =
        new ManagementObjectSearcher( "select * from Win32_OperatingSystem" )
        .Get()
        .Cast()
        .First();
    
    OS.Name = ((string)wmi["Caption"]).Trim();
    OS.Version = (string)wmi["Version"];
    OS.MaxProcessCount = (uint)wmi["MaxNumberOfProcesses"];
    OS.MaxProcessRAM = (ulong)wmi["MaxProcessMemorySize"];
    OS.Architecture = (string)wmi["OSArchitecture"];
    OS.SerialNumber = (string)wmi["SerialNumber"];
    OS.Build = ((string)wmi["BuildNumber"]).ToUint();
    

    Retrieving CPU info:

    var cpu =
        new ManagementObjectSearcher( "select * from Win32_Processor" )
        .Get()
        .Cast()
        .First();
    
    CPU.ID = (string)cpu["ProcessorId"];
    CPU.Socket = (string)cpu["SocketDesignation"];
    CPU.Name = (string)cpu["Name"];
    CPU.Description = (string)cpu["Caption"];
    CPU.AddressWidth = (ushort)cpu["AddressWidth"];
    CPU.DataWidth = (ushort)cpu["DataWidth"];
    CPU.Architecture = (CPU.CpuArchitecture)(ushort)cpu["Architecture"];
    CPU.SpeedMHz = (uint)cpu["MaxClockSpeed"];
    CPU.BusSpeedMHz = (uint)cpu["ExtClock"];
    CPU.L2Cache = (uint)cpu["L2CacheSize"] * (ulong)1024;
    CPU.L3Cache = (uint)cpu["L3CacheSize"] * (ulong)1024;
    CPU.Cores = (uint)cpu["NumberOfCores"];
    CPU.Threads = (uint)cpu["NumberOfLogicalProcessors"];
    
    CPU.Name =
       CPU.Name
       .Replace( "(TM)", "™" )
       .Replace( "(tm)", "™" )
       .Replace( "(R)", "®" )
       .Replace( "(r)", "®" )
       .Replace( "(C)", "©" )
       .Replace( "(c)", "©" )
       .Replace( "    ", " " )
       .Replace( "  ", " " );
    

提交回复
热议问题