using System;
using System.Runtime.InteropServices;
usingSystem.Management;
namespace Hardware
{
/// <summary>
/// Hardware_Mac 的摘要说明。
/// </summary>
public class HardwareInfo
{
//取机器名
public string GetHostName()
{
return System.Net.Dns.GetHostName();
}
//取CPU编号
public String GetCpuID()
{
try
{
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
String strCpuID = null ;
foreach( ManagementObject mo in moc )
{
strCpuID = mo.Properties["ProcessorId"].Value.ToString();
break;
}
return strCpuID;
}
catch
{
return "";
}
}//end method
//取第一块硬盘编号
public String GetHardDiskID()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
String strHardDiskID = null ;
foreach(ManagementObject mo in searcher.Get())
{
strHardDiskID = mo["SerialNumber"].ToString().Trim();
break;
}
return strHardDiskID ;
}
catch
{
return "";
}
}//end
public enum NCBCONST
{
NCBNAMSZ=16,/* absolute length of a net name*/
MAX_LANA=254,/* lana's in range 0 to MAX_LANA inclusive*/
NCBENUM=0x37,/* NCB ENUMERATE LANA NUMBERS*/
NRC_GOODRET=0x00,/* good return*/
NCBRESET=0x32,/* NCB RESET*/
NCBASTAT=0x33,/* NCB ADAPTER STATUS*/
NUM_NAMEBUF =30,/* Number of NAME's BUFFER*/
}
[StructLayout(LayoutKind.Sequential)]
public struct ADAPTER_STATUS
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=6)]
public byte[] adapter_address;
public byterev_major;
public bytereserved0;
public byteadapter_type;
public byterev_minor;
public ushortduration;
public ushortfrmr_recv;
public ushortfrmr_xmit;
public ushortiframe_recv_err;
public ushortxmit_aborts;
public uintxmit_success;
public uintrecv_success;
public ushortiframe_xmit_err;
public ushortrecv_buff_unavail;
public ushortt1_timeouts;
public ushortti_timeouts;
public uintreserved1;
public ushortfree_ncbs;
public ushortmax_cfg_ncbs;
public ushortmax_ncbs;
public ushortxmit_buf_unavail;
public ushortmax_dgram_size;
public ushortpending_sess;
public ushortmax_cfg_sess;
public ushortmax_sess;
public ushortmax_sess_pkt_size;
public ushortname_count;
}
[StructLayout(LayoutKind.Sequential)]
public struct NAME_BUFFER
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)]
public byte[] name;
public byte name_num;
public byte name_flags;
}
[StructLayout(LayoutKind.Sequential)]
public struct NCB
{
public bytencb_command;
public bytencb_retcode;
public bytencb_lsn;
public bytencb_num;
public IntPtr ncb_buffer;
public ushort ncb_length;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)]
public byte[]ncb_callname;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)]
public byte[]ncb_name;
public bytencb_rto;
public bytencb_sto;
public IntPtr ncb_post;
public bytencb_lana_num;
public bytencb_cmd_cplt;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ncb_reserve;
public IntPtr ncb_event;
}
[StructLayout(LayoutKind.Sequential)]
public struct LANA_ENUM
{
public byte length;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.MAX_LANA)]
public byte[] lana;
}
[StructLayout(LayoutKind.Auto)]
public struct ASTAT
{
public ADAPTER_STATUS adapt;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NUM_NAMEBUF)]
public NAME_BUFFER[] NameBuff;
}
public class Win32API
{
[DllImport("NETAPI32.DLL")]
public static extern char Netbios(ref NCB ncb);
}
public string GetMacAddress()
{
string addr="";
try
{
int cb;
ASTAT adapter;
NCB Ncb=new NCB();
char uRetCode;
LANA_ENUM lenum;
Ncb.ncb_command = (byte)NCBCONST.NCBENUM;
cb = Marshal.SizeOf(typeof(LANA_ENUM));
Ncb.ncb_buffer = Marshal.AllocHGlobal(cb);
Ncb.ncb_length = (ushort)cb;
uRetCode = Win32API.Netbios(ref Ncb);
lenum = (LANA_ENUM)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(LANA_ENUM));
Marshal.FreeHGlobal(Ncb.ncb_buffer);
if(uRetCode != (short)NCBCONST.NRC_GOODRET)
return "";
for(int i=0; i < lenum.length ;i++)
{
Ncb.ncb_command = (byte)NCBCONST.NCBRESET;
Ncb.ncb_lana_num = lenum.lana[i];
uRetCode = Win32API.Netbios(ref Ncb);
if(uRetCode != (short)NCBCONST.NRC_GOODRET)
return "";
Ncb.ncb_command = (byte)NCBCONST.NCBASTAT;
Ncb.ncb_lana_num = lenum.lana[i];
Ncb.ncb_callname[0]=(byte)'*';
cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER))*(int)NCBCONST.NUM_NAMEBUF;
Ncb.ncb_buffer = Marshal.AllocHGlobal(cb);
Ncb.ncb_length = (ushort)cb;
uRetCode = Win32API.Netbios(ref Ncb);
adapter.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(ADAPTER_STATUS));
Marshal.FreeHGlobal(Ncb.ncb_buffer);
if (uRetCode == (short)NCBCONST.NRC_GOODRET)
{
if(i>0)
addr += ":";
addr = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}",
adapter.adapt.adapter_address[0],
adapter.adapt.adapter_address[1],
adapter.adapt.adapter_address[2],
adapter.adapt.adapter_address[3],
adapter.adapt.adapter_address[4],
adapter.adapt.adapter_address[5]);
}
}
}
catch
{}
return addr.Replace(' ', '0');
}
}
}
分享到:
相关推荐
C#如何取硬件标志 C#如何取硬件标志()
C#如何取硬件标志,取机器名,取CPU编号,第一块硬盘编号 源代码
使用C#代码取得 取机器名 取CPU编号 获取硬盘序列号 获取MAC和ID
用于获取硬件的IDCPU编号主板编号网卡编号等
C#获取计算机硬件信息 C#获取计算机硬件信息 C#获取计算机硬件信息 C#获取计算机硬件信息 C#获取计算机硬件信息
c# 实现硬件仿真程序 模拟硬件发送数据,通过配置txt文件 将协议包数据发送对对应的服务器端
C#获取硬件代码相当不错,可以用于软件加密等等
通过API实现C#对硬件的控制
C#读取硬件信息,cpu序列号,硬盘ID号,获取网卡MacAddress
常用的使用C#取硬件编号(CPU,硬盘,MAC地址等)完整可用类
一个开源的C#语言的硬件信息展示项目。 是通过C语言访问硬件底层,通过C#对数据处理和展示。 项目SVN: http://open-hardware-monitor.googlecode.com/svn/trunk
C#编程 网络安全及硬件控制 远程控制计算机(源码)C#编程 网络安全及硬件控制 远程控制计算机(源码)C#编程 网络安全及硬件控制 远程控制计算机(源码)C#编程 网络安全及硬件控制 远程控制计算机(源码)C#编程 网络安全...
C#编程 网络安全及硬件控制 ScanIP(源码)C#编程 网络安全及硬件控制 ScanIP(源码)C#编程 网络安全及硬件控制 ScanIP(源码)C#编程 网络安全及硬件控制 ScanIP(源码)C#编程 网络安全及硬件控制 ScanIP(源码)C#编程 ...
C#代码实时监控CPU温度、CPU占用率、显卡温度、GPU占用率、风扇转速、内存使用率、磁盘读写速率等硬件信息
C# 屏幕取词 源码 基于金山词霸库开发 需要软件注册
C#获取计算机硬件信息代码,包括主机名、网卡MAC,IP,主板,内存等信息。
C#中使用Obsolete标志代码过期
C#获取电脑硬件配置信息.txtC#获取电脑硬件配置信息.txtC#获取电脑硬件配置信息.txtC#获取电脑硬件配置信息.txtC#获取电脑硬件配置信息.txtC#获取电脑硬件配置信息.txtC#获取电脑硬件配置信息.txt
C#读取计算机硬件信息,包括CPU,硬盘,升成序列号等