代码改变世界

计算机信息类ComputerInfo

  苏飞  阅读(1991)  评论(3编辑  收藏  举报
复制代码
 
using System;
using System.Management;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace BaseFunction
{
    
///<summary>
    
///计算机信息类
    
///</summary>

    
public  class ComputerInfo
    {
        
private  string CpuID;
        
private string MacAddress;
        
private string DiskID;
        
private string IpAddress;
        
private string LoginUserName;
        
private string ComputerName;
        
private string SystemType;
        
private string TotalPhysicalMemory; //单位:M 
        private static ComputerInfo _instance;

        
internal static ComputerInfo Instance()
        {
            
if (_instance == null)
                _instance 
= new ComputerInfo();
            
return _instance;
        }

        
internal ComputerInfo()
        {
            CpuID 
= GetCpuID();
            MacAddress 
= GetMacAddress();
            DiskID 
= GetDiskID();
            IpAddress 
= GetIPAddress();
            LoginUserName 
= GetUserName();
            SystemType 
= GetSystemType();
            TotalPhysicalMemory 
= GetTotalPhysicalMemory();
            ComputerName 
= GetComputerName();
        }
        
/// <summary>
        
/// 浏览器客户端  获取网卡MAC地址MD5加密串  杨旭东
        
/// </summary>
        
/// <returns></returns>
        public static string GetClientMac()
        {
            
try
            {
              
string clientIP =System.Web.HttpContext.Current.Request.UserHostAddress.Trim();
              Int32 idest 
= API.inet_addr(clientIP);
              Int64 macInfo 
= new Int64();
              Int32 length 
= 6;
              
int res = API.SendARP(idest, 0ref macInfo, ref length);
              
string mac_src = macInfo.ToString("X");
              
if (!string.IsNullOrEmpty(mac_src) && !"0".Equals(mac_src))
              {
                  
while (mac_src.Length < 12)
                  {
                      mac_src 
= mac_src.Insert(0"0");
                  }
                  
string mac_dest = string.Empty;
                  
for (int i = 0; i < 11; i++)
                  {
                      
if (i % 2 == 0)
                      {
                          
if (i == 10)
                              mac_dest 
= mac_dest.Insert(0, mac_src.Substring(i, 2));
                          
else
                              mac_dest 
= "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
                      }
                  }
                  
return mac_dest;
              }
            }
            
catch
            {
                
return "0";
            }
            
return "0";
        }

        
/// <summary>
        
/// 获取CPU序列号代码 
        
/// </summary>
        
/// <returns></returns>
      public  static  string GetCpuID()
        {
            
try
            {
                
//获取CPU序列号代码 
                string cpuInfo = "";//cpu序列号 
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc 
= mc.GetInstances();
                
foreach (ManagementObject mo in moc)
                {
                    cpuInfo 
= mo.Properties["ProcessorId"].Value.ToString();
                }
                moc 
= null;
                mc 
= null;
                
return cpuInfo;
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }

        }

        
/// <summary>
        
/// 获取网卡硬件地址 
        
/// </summary>
        
/// <returns></returns>
      public static string GetMacAddress()
        {
            
try
            {
                
//获取网卡硬件地址 
            return Mac.GetMacAddress();
                
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }
        }

        
/// <summary>
        
/// 获取IP地址(IPv4)
        
/// </summary>
        
/// <returns></returns>
      public static string GetIPAddress()
        {
            
try
            {
                IPAddress[] arrIPAddresses 
= Dns.GetHostAddresses(Dns.GetHostName());
                
foreach (IPAddress ip in arrIPAddresses)
                {
                    
if (ip.AddressFamily.Equals(AddressFamily.InterNetwork))//IPv4
                    {
                        
return ip.ToString();
                    }
                }
                
return "unknow";
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }

        }

        
/// <summary>
        
/// 获取硬盘ID 
        
/// </summary>
        
/// <returns></returns>
      public static string GetDiskID()
        {
            
try
            {
             
return Win32.GetHddInformation().ModuleNumber;
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }

        }

        
///<summary>
        
///操作系统的登录用户名 
        
///</summary>
        
///<returns></returns>
      public static string GetUserName()
        {
            
try
            {
                
byte[] userName = new byte[30];
                Int32[] length 
= new Int32[1];
                length[
0= 30;//限定用户名长度
                API.GetUserName(userName, length);
                
return System.Text.Encoding.ASCII.GetString(userName);
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }

        }


        
///<summary>
        
/// PC类型 
        
///</summary>
        
///<returns></returns>
      public static string GetSystemType()
        {
            
try
            {
                
string st = "";
                ManagementClass mc 
= new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc 
= mc.GetInstances();
                
foreach (ManagementObject mo in moc)
                {

                    st 
= mo["SystemType"].ToString();

                }
                moc 
= null;
                mc 
= null;
                
return st;
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }

        }

        
///<summary>
        
///物理内存 
        
///</summary>
        
///<returns></returns>
      public static string GetTotalPhysicalMemory()
        {
            
try
            {

                API.MEMORY_INFO memoryInfo 
= new API.MEMORY_INFO();
                API.GlobalMemoryStatus(
ref memoryInfo);
                
return memoryInfo.dwTotalPhys.ToString();
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }
        }
        
///<summary>
        
/// 获取计算机名称
        
///</summary>
        
///<returns></returns>
      public static string GetComputerName()
        {
            
try
            {
                
byte[] computerName = new byte[30];
                Int32[] length 
= new Int32[1];
                length[
0= 30;//限定计算机名长度
                API.GetComputerName(computerName,length);
                
return System.Text.Encoding.ASCII.GetString(computerName);
            }
            
catch
            {
                
return "unknow";
            }
            
finally
            {
            }
        }
    }
}
复制代码
(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2010-06-22 C#仿QQ皮肤-常用用户控件EnterFrom1和窗体EntryForm的实现
点击右上角即可分享
微信分享提示