C#中,获取系统信息全解

来源:互联网 发布:手机做表格软件 编辑:程序博客网 时间:2024/06/16 14:42
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Management;
//注意:在Visual Studio中,进行了using System.Management
//下面还是会调用不到,需要在引用(reference)中添加这个dll
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
 
namespace util
{
    class系统信息类
    {
        [DllImport("kernel32")]
        publicstaticexternvoidGetWindowsDirectory(StringBuilder WinDir, intcount);
        [DllImport("kernel32")]
        publicstaticexternvoidGetSystemDirectory(StringBuilder SysDir, intcount);
        [DllImport("kernel32")]
        privatestaticexternvoidGlobalMemoryStatus(ref 内存信息结构体 memibfo);
        [DllImport("kernel32")]
        publicstaticexternvoidGetSystemInfo(ref cpu信息结构体 cpuinfo);
        [DllImport("kernel32")]
        publicstaticexternvoidGetSystemTime(ref 系统时间信息结构体 stinfo);
        [DllImport("Iphlpapi.dll")]
        publicstaticexternintSendARP(Int32 DestIP,Int32 SrcIP, ref Int64 MacAddr,ref Int32 PhyAddrLen);
        [DllImport("Ws2_32.dll")]
        publicstaticextern Int32 inet_addr(string ipaddr);
 
        publicstruct 内存信息结构体
        {
            publicuint 长度;
            publicuint 内存使用率;
            publicuint 总物理内存;//此处全是以字节为单位
            publicuint 可用物理内存;
            publicuint 交换文件总大小;
            publicuint 可用交换文件大小;
            publicuint 总虚拟内存;
            publicuint 可用虚拟内存大小;
        }
 
        [StructLayout(LayoutKind.Sequential)]
        publicstruct cpu信息结构体
        {
            publicuint cpu的OemId;
            publicuint cpu页面大小;
            publicuint lpMinimumApplicationAddress;
            publicuint lpMaximumApplicationAddress;
            publicuint dwActiveProcessorMask;
            publicuint cpu个数;
            publicuint cpu类别;
            publicuint dwAllocationGranularity;
            publicuint cpu等级;
            publicuint cpu修正;
        }
        [StructLayout(LayoutKind.Sequential)]
        publicstruct 系统时间信息结构体
        {
            publicushort wYear;
            publicushort wMonth;
            publicushort wDayOfWeek;
            publicushort wDay;
            publicushort wHour;
            publicushort wMinute;
            publicushort wSecond;
            publicushort wMilliseconds;
        }
        publicstaticstring 内存利用率函数()
        {
            内存信息结构体 memInfor = new内存信息结构体();
            GlobalMemoryStatus(ref memInfor);
            returnmemInfor.内存使用率.ToString("0.0");
        }
        publicstaticstring 系统路径()
        {
            constintnChars = 128;
            StringBuilder Buff = newStringBuilder(nChars);
            GetSystemDirectory(Buff, nChars);
            returnBuff.ToString();
        }
        publicstaticstring window路径()
        {
            constintnChars = 128;
            StringBuilder Buff = newStringBuilder(nChars);
            GetWindowsDirectory(Buff, nChars);
            returnBuff.ToString();
        }
        publicstatic内存信息结构体 内存自定义函数()
        {
            内存信息结构体 memInfor = new内存信息结构体();
            GlobalMemoryStatus(ref memInfor);
            returnmemInfor;
        }
        publicstaticcpu信息结构体 cpu自定义函数()
        {
            cpu信息结构体 memInfor = newcpu信息结构体();
            GetSystemInfo(ref memInfor);
            returnmemInfor;
        }
        publicstatic系统时间信息结构体 系统时间自定义函数()
        {
            系统时间信息结构体 memInfor = new系统时间信息结构体();
            GetSystemTime(ref memInfor);
            returnmemInfor;
        }
 
        publicstaticstring cpu序列号函数()
            {
                try
                {
                    string cpuInfo = "";//cpu序列号
                    ManagementClass mc = newManagementClass("Win32_Processor");
                    ManagementObjectCollection moc = mc.GetInstances();
                    foreach (ManagementObject mo in moc)
                    {
                      cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                    }
                    moc = null;
                    mc = null;
                    returncpuInfo;
                }
                catch
                {
                   return"unknow";
                }
            }
        publicstaticstring 获得mac地址函数()
            {
                string mac = "";
                ManagementClass mc = newManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if((bool)mo["IPEnabled"] == true)
                    {
                        mac = mo["MacAddress"].ToString();
                    }
                    mo.Dispose();
                }
                returnmac;
            }
        publicstaticstring 获得远程目标mac地址函数(string ip地址)
          {
              StringBuilder mac = newStringBuilder();
              try
              {
                  Int32 remote = inet_addr(ip地址);
                  Int64 macinfo = newInt64();
                  Int32 length = 6;
                  SendARP(remote,0,ref macinfo,ref length);
                  string temp = Convert.ToString(macinfo, 16).PadLeft(12,'0').ToUpper();
                  intx = 12;
                  for(inti = 0; i < 6; i++)
                  {
                      if(i == 5)
                          mac.Append(temp.Substring(x - 2,2));
                      else
                          mac.Append(temp.Substring(x - 2,2) + "-");
                      x -= 2;
                  }
                  returnmac.ToString();
              }
              catch
              {
                  returnmac.ToString();
              }
          }
        publicstaticstring 获得ip地址函数()
            {
                try
                {
                    string st = "";
                    ManagementClass mc = newManagementClass("Win32_NetworkAdapterConfiguration");
                    ManagementObjectCollection moc = mc.GetInstances();
                    foreach (ManagementObject mo in moc)
                    {
                        if((bool)mo["IPEnabled"] == true)
                        {
                            //st=mo["IpAddress"].ToString();
                            System.Array ar;
                            ar = (System.Array)(mo.Properties["IpAddress"].Value);
                            st = ar.GetValue(0).ToString();
                            break;
                        }
                    }
                    moc = null;
                    mc = null;
                    returnst;
                }
                catch
                {
                    return"unknow";
                }
            }
        publicstaticstring 获取硬盘ID函数()
            {
                try
                {
                    String HDid = "";
                    ManagementClass mc = newManagementClass("Win32_DiskDrive");
                    ManagementObjectCollection moc = mc.GetInstances();
                    foreach (ManagementObject mo in moc)
                    {
                        HDid = (string)mo.Properties["Model"].Value;
                    }
                    moc = null;
                    mc = null;
                    returnHDid;
                }
                catch
                {
                    return"unknow";
                }
            }
        publicstaticstring 获得系统登陆用户名函数()
            {
                try
                {
                    string st = "";
                    ManagementClass mc = newManagementClass("Win32_ComputerSystem");
                    ManagementObjectCollection moc = mc.GetInstances();
                    foreach (ManagementObject mo in moc)
                    {
                        st = mo["UserName"].ToString();
                    }
                    moc = null;
                    mc = null;
                    returnst;
                }
                catch
                {
                    return"unknow";
                }
            }
        publicstaticstring 获得电脑类型函数()
            {
                try
                {
                    string st = "";
                    ManagementClass mc = newManagementClass("Win32_ComputerSystem");
                    ManagementObjectCollection moc = mc.GetInstances();
                    foreach (ManagementObject mo in moc)
                    {
                        st = mo["SystemType"].ToString();
                    }
                    moc = null;
                    mc = null;
                    returnst;
                }
                catch
                {
                    return"unknow";
                }
            }
        publicstaticstring 获得物理总内存函数()
          {
              try
              {
                  string st = "";
                  ManagementClass mc = newManagementClass("Win32_ComputerSystem");
                  ManagementObjectCollection moc = mc.GetInstances();
                  foreach (ManagementObject mo in moc)
                  {
                      st = mo["TotalPhysicalMemory"].ToString();
                  }
                  moc = null;
                  mc = null;
                  returnst;
              }
              catch
              {
                  return"unknow";
              }
          }
        publicstaticstring 获得电脑名称函数()
         {
             try
             {
                 returnSystem.Environment.GetEnvironmentVariable("ComputerName");
             }
             catch
             {
                 return"unknow";
             }
         }
        publicstaticfloat性能显示状况2(string CategoryName, string CounterName)
        {
            PerformanceCounter pc = newPerformanceCounter(CategoryName, CounterName);
            Thread.Sleep(500);//waitfor1second
            floatxingneng = pc.NextValue();
            returnxingneng;
        }
 
        publicstaticfloat性能显示状况3(string CategoryName, string CounterName, string InstanceName)
        {
            PerformanceCounter pc = newPerformanceCounter(CategoryName, CounterName, InstanceName);
            Thread.Sleep(500);//waitfor1second
            floatxingneng = pc.NextValue();
            returnxingneng;
        }
        publicstaticstring os版本信息函数()
        {
            System.OperatingSystem 版本信息 = System.Environment.OSVersion;
            switch(版本信息.Platform)
            {
                caseSystem.PlatformID.Win32Windows:
                    switch(版本信息.Version.Minor)
                    {
                        case0:
                            return"Windows 95";
                            break;
                        case10:
                            if(版本信息.Version.Revision.ToString() == "2222A")
                                return"Windows 98 Second Edition";
                            else
                                return"Windows 98";
                            break;
                        case90:
                            return"Windows Me";
                            break;
                    }
                    break;
                caseSystem.PlatformID.Win32NT:
                    switch(版本信息.Version.Major)
                    {
                        case3:
                            return"Windows NT 3.51";
                            break;
                        case4:
                            return"Windows NT 4.0";
                            break;
                        case5:
                            if(版本信息.Version.Minor == 0)
                                return"Windows 2000";
                            else
                                return"Windows XP";
                            break;
                        case6:
                            return"Windows 8";
                            break;
                    }
                    break;
            }
            return"发现失败";
 
        }
    }
 
}


本文转载自:https://www.2cto.com/kf/201708/668145.html

原创粉丝点击