C# 获得MAC,CUP,硬盘等编号

这里的硬盘编号与WinForm程序获得的结果不同,各位同仁使用的时候注意下,

1.首先先添加Web.Config文件的节点<authentication mode="Forms" />

这个一定要加上,如果你用的是网站配置的mode不是Forms的话,会出现无权限或访问被拒绝,这是因为网站使用非Forms模式是没有系统的信息访问的权限滴!

2.SystemMethodInfo是主要的类,其它类都是辅助类,主要是获得相关信息的类.

SystemMethodInfo类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Configuration;
  6. using System.Runtime.InteropServices;
  7. using System.Management;
  8. using System.Text;
  9. namespace SysMethodExt.SystemMethod
  10. {
  11.     public sealed class SystemMethodInfo
  12.     {
  13.         private const int CHAR_COUNT = 128;       
  14.         [DllImport("kernel32")]
  15.         private static extern void GetWindowsDirectory(StringBuilder WinDir, int count);
  16.         [DllImport("kernel32")]
  17.         private static extern void GetSystemDirectory(StringBuilder SysDir, int count);
  18.         [DllImport("kernel32")]
  19.         private static extern void GetSystemInfo(ref CpuInfo cpuInfo);
  20.         [DllImport("kernel32")]
  21.         private static extern void GlobalMemoryStatus(ref MemoryInfo memInfo);
  22.         [DllImport("kernel32")]
  23.         private static extern void GetSystemTime(ref SystemTimeInfo sysInfo);
  24.        /// <summary>
  25.         /// 查询CPU编号
  26.         /// </summary>
  27.         /// <returns></returns>
  28.         public static string GetCpuId()
  29.         {
  30.             ManagementClass mClass = new ManagementClass("Win32_Processor");
  31.             ManagementObjectCollection moc = mClass.GetInstances();
  32.             string cpuId=null;
  33.             foreach (ManagementObject mo in moc)
  34.             {
  35.                 cpuId = mo.Properties["ProcessorId"].Value.ToString();
  36.                 break;
  37.             }
  38.             return cpuId;
  39.         }
  40.        /// <summary>
  41.         /// 查询硬盘编号
  42.         /// </summary>
  43.         /// <returns></returns>
  44.         public static string GetMainHardDiskId()
  45.         {
  46.             String hardDiskID = null;
  47.             ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
  48.             ManagementObjectCollection moc1 = cimobject1.GetInstances();
  49.             foreach (ManagementObject mo in moc1)
  50.             {
  51.                 hardDiskID = (string)mo.Properties["Model"].Value;
  52.                 break;
  53.             }           
  54.             return hardDiskID; 
  55.         }
  56.        /// <summary>
  57.         /// 获取Windows目录
  58.         /// </summary>
  59.         /// <returns></returns>
  60.         public static string GetWinDirectory()
  61.         {
  62.             StringBuilder sBuilder = new StringBuilder(CHAR_COUNT);
  63.             GetWindowsDirectory(sBuilder, CHAR_COUNT);
  64.             return sBuilder.ToString();
  65.         }
  66.         /// <summary>
  67.         /// 获取系统目录
  68.         /// </summary>
  69.         /// <returns></returns>
  70.         public static string GetSysDirectory()
  71.         {
  72.             StringBuilder sBuilder = new StringBuilder(CHAR_COUNT);
  73.             GetSystemDirectory(sBuilder, CHAR_COUNT);
  74.             return sBuilder.ToString();
  75.         }
  76.        /// <summary>
  77.        /// 获取CPU信息
  78.        /// </summary>
  79.        /// <returns></returns>
  80.         public static CpuInfo GetCpuInfo()
  81.         {
  82.             CpuInfo cpuInfo = new CpuInfo();
  83.             GetSystemInfo(ref cpuInfo);
  84.             return cpuInfo;
  85.         }
  86.         /// <summary>
  87.         /// 获取系统内存信息
  88.         /// </summary>
  89.         /// <returns></returns>
  90.         public static MemoryInfo GetMemoryInfo()
  91.         {
  92.             MemoryInfo memoryInfo = new MemoryInfo();
  93.             GlobalMemoryStatus(ref memoryInfo);
  94.             return memoryInfo;
  95.         }
  96.         /// <summary>
  97.         /// 获取系统时间信息
  98.         /// </summary>
  99.         /// <returns></returns>
  100.         public static SystemTimeInfo GetSystemTimeInfo()
  101.         {
  102.             SystemTimeInfo systemTimeInfo = new SystemTimeInfo();
  103.             GetSystemTime(ref systemTimeInfo);
  104.             return systemTimeInfo;
  105.         }
  106.         /// <summary>
  107.         /// 获得MAC
  108.         /// </summary>
  109.         /// <returns></returns>
  110.         public static string GetMAC()
  111.         {
  112.             ManagementClass mc;
  113.             mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
  114.             ManagementObjectCollection moc = mc.GetInstances();
  115.             string mac = string.Empty;
  116.             foreach (ManagementObject mo in moc)
  117.             {
  118.                 if (mo["IPEnabled"].ToString() == "True")
  119.                     mac = mo["MacAddress"].ToString();
  120.             }
  121.             return mac;
  122.         }
  123.         /// <summary>
  124.         /// 获取系统名称
  125.         /// </summary>
  126.         /// <returns></returns>
  127.         public static string GetOperationSystemInName()
  128.         {
  129.             OperatingSystem os = System.Environment.OSVersion;
  130.             string osName = "UNKNOWN";
  131.             switch (os.Platform)
  132.             {
  133.                 case PlatformID.Win32Windows:
  134.                     switch (os.Version.Minor)
  135.                     {
  136.                         case 0: osName = "Windows 95"break;
  137.                         case 10: osName = "Windows 98"break;
  138.                         case 90: osName = "Windows ME"break;
  139.                     }
  140.                     break;
  141.                 case PlatformID.Win32NT:
  142.                     switch (os.Version.Major)
  143.                     {
  144.                         case 3: osName = "Windws NT 3.51"break;
  145.                         case 4: osName = "Windows NT 4"break;
  146.                         case 5: if (os.Version.Minor == 0)
  147.                                 {
  148.                                     osName = "Windows 2000"
  149.                                 }
  150.                                 else if (os.Version.Minor == 1)
  151.                                 {
  152.                                     osName = "Windows XP"
  153.                                 }
  154.                                 else if (os.Version.Minor == 2)
  155.                                 {
  156.                                     osName = "Windows Server 2003"
  157.                                 }
  158.                                 break;
  159.                         case 6: osName = "Longhorn"break;
  160.                     }
  161.                     break;
  162.             }
  163.             return String.Format("{0},{1}", osName, os.Version.ToString());
  164.         }
  165.     }
  166. }

CpuInfo辅助类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Configuration;
  6. using System.Runtime.InteropServices;
  7. namespace SysMethodExt.SystemMethod
  8. {
  9.     [StructLayout(LayoutKind.Sequential)] 
  10.     public struct CpuInfo
  11.     {
  12.         /**//// <summary>
  13.         /// OEM ID
  14.         /// </summary>
  15.         public uint dwOemId;
  16.         /**//// <summary>
  17.         /// 页面大小
  18.         /// </summary>
  19.         public uint dwPageSize;
  20.         public uint lpMinimumApplicationAddress;
  21.         public uint lpMaximumApplicationAddress;
  22.         public uint dwActiveProcessorMask;
  23.         /**//// <summary>
  24.         /// CPU个数
  25.         /// </summary>
  26.         public uint dwNumberOfProcessors;
  27.         /**//// <summary>
  28.         /// CPU类型
  29.         /// </summary>
  30.         public uint dwProcessorType;
  31.         public uint dwAllocationGranularity;
  32.         /**//// <summary>
  33.         /// CPU等级
  34.         /// </summary>
  35.         public uint dwProcessorLevel;
  36.         public uint dwProcessorRevision; 
  37.     }
  38. }

MemoryInfo辅助类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Configuration;
  6. using System.Runtime.InteropServices;
  7. namespace SysMethodExt.SystemMethod
  8. {
  9.         /**//**
  10.      * LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序
  11.      * 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。
  12.      * LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序
  13.      * LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。
  14.      */
  15.     /**//// <summary>
  16.     /// 定义内存的信息结构
  17.     /// </summary>
  18.     [StructLayout(LayoutKind.Sequential)]
  19.     public struct MemoryInfo
  20.     {
  21.         /**//// <summary>
  22.         /// 
  23.         /// </summary>
  24.         public uint dwLength;
  25.         /**//// <summary>
  26.         /// 已经使用的内存
  27.         /// </summary>
  28.         public uint dwMemoryLoad;
  29.         /**//// <summary>
  30.         /// 总物理内存大小
  31.         /// </summary>
  32.         public uint dwTotalPhys;
  33.         /**//// <summary>
  34.         /// 可用物理内存大小
  35.         /// </summary>
  36.         public uint dwAvailPhys;
  37.         /**//// <summary>
  38.         /// 交换文件总大小
  39.         /// </summary>
  40.         public uint dwTotalPageFile;
  41.         /**//// <summary>
  42.         /// 可用交换文件大小
  43.         /// </summary>
  44.         public uint dwAvailPageFile;
  45.         /**//// <summary>
  46.         /// 总虚拟内存大小
  47.         /// </summary>
  48.         public uint dwTotalVirtual;
  49.         /**//// <summary>
  50.         /// 可用虚拟内存大小
  51.         /// </summary>
  52.         public uint dwAvailVirtual;
  53.     }
  54. }

SystemTimeInfo辅助类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Configuration;
  6. using System.Runtime.InteropServices;
  7. namespace SysMethodExt.SystemMethod
  8. {
  9.         /**//**
  10.      * LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序
  11.      * 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。
  12.      * LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序
  13.      * LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。
  14.      */
  15.     /**//// <summary>
  16.     /// 定义系统时间的信息结构
  17.     /// </summary>
  18.     [StructLayout(LayoutKind.Sequential)] 
  19.     public struct SystemTimeInfo
  20.     {
  21.         /**//// <summary>
  22.         /// 年
  23.         /// </summary>
  24.         public ushort wYear;
  25.         /**//// <summary>
  26.         /// 月
  27.         /// </summary>
  28.         public ushort wMonth;
  29.         /**//// <summary>
  30.         /// 星期
  31.         /// </summary>
  32.         public ushort wDayOfWeek;
  33.         /**//// <summary>
  34.         /// 天
  35.         /// </summary>
  36.         public ushort wDay;
  37.         /**//// <summary>
  38.         /// 小时
  39.         /// </summary>
  40.         public ushort wHour;
  41.         /**//// <summary>
  42.         /// 分钟
  43.         /// </summary>
  44.         public ushort wMinute;
  45.         /**//// <summary>
  46.         /// 秒
  47.         /// </summary>
  48.         public ushort wSecond;
  49.         /**//// <summary>
  50.         /// 毫秒
  51.         /// </summary>
  52.         public ushort wMilliseconds;
  53.     }
  54. }

猜你喜欢

转载自blog.csdn.net/baozhenliang/article/details/3644800
今日推荐