c#中如何获得 cpu型号

c#中如何获得 cpu型号,第1张

internal static string GetCpuInfo()

{

ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\CIMV2", "SELECT FROM Win32_Processor");

foreach (ManagementObject obj2 in searcherGet())

{

try

{

return (obj2GetPropertyValue("Name")ToString() + "," + obj2GetPropertyValue("CurrentClockSpeed")ToString() + " Mhz," + EnvironmentProcessorCountToString() + " 个处理器");

}

catch

{

continue;

}

}

return "未知";

}

internal static string GetCpuID()

{

ManagementObjectCollection instances = new ManagementClass("Win32_Processor")GetInstances();

foreach (ManagementObject obj2 in instances)

{

return obj2Properties["ProcessorId"]ValueToString();

}

return null;

}

winform可以,webform几乎就不可能除非写插件,

这是在winform下的。客户端的

using SystemRuntimeInteropServices;

using SystemManagement;

using System;

public class HardwareInfo

{

//取机器名

public string GetHostName()

{

return SystemNetDnsGetHostName();

}

//取CPU编号

public String GetCpuID()

{

try

{

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mcGetInstances();

String strCpuID = null ;

foreach( ManagementObject mo in moc )

{

strCpuID = moProperties["ProcessorId"]ValueToString();

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 searcherGet())

{

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(LayoutKindSequential)]

public struct ADAPTER_STATUS

{

[MarshalAs(UnmanagedTypeByValArray, SizeConst=6)]

public byte[] adapter_address;

public byte rev_major;

public byte reserved0;

public byte adapter_type;

public byte rev_minor;

public ushort duration;

public ushort frmr_recv;

public ushort frmr_xmit;

public ushort iframe_recv_err;

public ushort xmit_aborts;

public uint xmit_success;

public uint recv_success;

public ushort iframe_xmit_err;

public ushort recv_buff_unavail;

public ushort t1_timeouts;

public ushort ti_timeouts;

public uint reserved1;

public ushort free_ncbs;

public ushort max_cfg_ncbs;

public ushort max_ncbs;

public ushort xmit_buf_unavail;

public ushort max_dgram_size;

public ushort pending_sess;

public ushort max_cfg_sess;

public ushort max_sess;

public ushort max_sess_pkt_size;

public ushort name_count;

}

[StructLayout(LayoutKindSequential)]

public struct NAME_BUFFER

{

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNCBNAMSZ)]

public byte[] name;

public byte name_num;

public byte name_flags;

}

[StructLayout(LayoutKindSequential)]

public struct NCB

{

public byte ncb_command;

public byte ncb_retcode;

public byte ncb_lsn;

public byte ncb_num;

public IntPtr ncb_buffer;

public ushort ncb_length;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNCBNAMSZ)]

public byte[] ncb_callname;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNCBNAMSZ)]

public byte[] ncb_name;

public byte ncb_rto;

public byte ncb_sto;

public IntPtr ncb_post;

public byte ncb_lana_num;

public byte ncb_cmd_cplt;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=10)]

public byte[] ncb_reserve;

public IntPtr ncb_event;

}

[StructLayout(LayoutKindSequential)]

public struct LANA_ENUM

{

public byte length;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTMAX_LANA)]

public byte[] lana;

}

[StructLayout(LayoutKindAuto)]

public struct ASTAT

{

public ADAPTER_STATUS adapt;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNUM_NAMEBUF)]

public NAME_BUFFER[] NameBuff;

}

public class Win32API

{

[DllImport("NETAPI32DLL")]

public static extern char Netbios(ref NCB ncb);

}

//取网卡mac

public string GetMacAddress()

{

string addr="";

try

{

int cb;

ASTAT adapter;

NCB Ncb=new NCB();

char uRetCode;

LANA_ENUM lenum;

Ncbncb_command = (byte)NCBCONSTNCBENUM;

cb = MarshalSizeOf(typeof(LANA_ENUM));

Ncbncb_buffer = MarshalAllocHGlobal(cb);

Ncbncb_length = (ushort)cb;

uRetCode = Win32APINetbios(ref Ncb);

lenum = (LANA_ENUM)MarshalPtrToStructure(Ncbncb_buffer, typeof(LANA_ENUM));

MarshalFreeHGlobal(Ncbncb_buffer);

if(uRetCode != (short)NCBCONSTNRC_GOODRET)

return "";

for(int i=0; i < lenumlength ;i++)

{

Ncbncb_command = (byte)NCBCONSTNCBRESET;

Ncbncb_lana_num = lenumlana[i];

uRetCode = Win32APINetbios(ref Ncb);

if(uRetCode != (short)NCBCONSTNRC_GOODRET)

return "";

Ncbncb_command = (byte)NCBCONSTNCBASTAT;

Ncbncb_lana_num = lenumlana[i];

Ncbncb_callname[0]=(byte)'';

cb = MarshalSizeOf(typeof(ADAPTER_STATUS)) + MarshalSizeOf(typeof(NAME_BUFFER))(int)NCBCONSTNUM_NAMEBUF;

Ncbncb_buffer = MarshalAllocHGlobal(cb);

Ncbncb_length = (ushort)cb;

uRetCode = Win32APINetbios(ref Ncb);

adapteradapt = (ADAPTER_STATUS)MarshalPtrToStructure(Ncbncb_buffer, typeof(ADAPTER_STATUS));

MarshalFreeHGlobal(Ncbncb_buffer);

if (uRetCode == (short)NCBCONSTNRC_GOODRET)

{

if(i>0)

addr += ":";

addr = stringFormat("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}",

adapteradaptadapter_address[0],

adapteradaptadapter_address[1],

adapteradaptadapter_address[2],

adapteradaptadapter_address[3],

adapteradaptadapter_address[4],

adapteradaptadapter_address[5]);

}

}

}

catch

{

}

return addrReplace(' ', '0');

}

}

首先需添加对SystemManagement的引用。

[c-sharp] view plain copy

using System;

using SystemRuntimeInteropServices;

using SystemManagement;

namespace Hardware

{

/// <summary>

/// HardwareInfo 的摘要说明。

/// </summary>

public class HardwareInfo

{

//取机器名

public string GetHostName()

{

return SystemNetDnsGetHostName();

}

//取CPU编号

public String GetCpuID()

{

try

{

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mcGetInstances();

String strCpuID = null;

foreach (ManagementObject mo in moc)

{

strCpuID = moProperties["ProcessorId"]ValueToString();

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 searcherGet())

{

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(LayoutKindSequential)]

public struct ADAPTER_STATUS

{

[MarshalAs(UnmanagedTypeByValArray, SizeConst = 6)]

public byte[] adapter_address;

public byte rev_major;

public byte reserved0;

public byte adapter_type;

public byte rev_minor;

public ushort duration;

public ushort frmr_recv;

public ushort frmr_xmit;

public ushort iframe_recv_err;

public ushort xmit_aborts;

public uint xmit_success;

public uint recv_success;

public ushort iframe_xmit_err;

public ushort recv_buff_unavail;

public ushort t1_timeouts;

public ushort ti_timeouts;

public uint reserved1;

public ushort free_ncbs;

public ushort max_cfg_ncbs;

public ushort max_ncbs;

public ushort xmit_buf_unavail;

public ushort max_dgram_size;

public ushort pending_sess;

public ushort max_cfg_sess;

public ushort max_sess;

public ushort max_sess_pkt_size;

public ushort name_count;

}

[StructLayout(LayoutKindSequential)]

public struct NAME_BUFFER

{

[MarshalAs(UnmanagedTypeByValArray, SizeConst = (int)NCBCONSTNCBNAMSZ)]

public byte[] name;

public byte name_num;

public byte name_flags;

}

[StructLayout(LayoutKindSequential)]

public struct NCB

{

public byte ncb_command;

public byte ncb_retcode;

public byte ncb_lsn;

public byte ncb_num;

public IntPtr ncb_buffer;

public ushort ncb_length;

[MarshalAs(UnmanagedTypeByValArray, SizeConst = (int)NCBCONSTNCBNAMSZ)]

public byte[] ncb_callname;

[MarshalAs(UnmanagedTypeByValArray, SizeConst = (int)NCBCONSTNCBNAMSZ)]

public byte[] ncb_name;

public byte ncb_rto;

public byte ncb_sto;

public IntPtr ncb_post;

public byte ncb_lana_num;

public byte ncb_cmd_cplt;

[MarshalAs(UnmanagedTypeByValArray, SizeConst = 10)]

public byte[] ncb_reserve;

public IntPtr ncb_event;

}

[StructLayout(LayoutKindSequential)]

public struct LANA_ENUM

{

public byte length;

[MarshalAs(UnmanagedTypeByValArray, SizeConst = (int)NCBCONSTMAX_LANA)]

public byte[] lana;

}

[StructLayout(LayoutKindAuto)]

public struct ASTAT

{

public ADAPTER_STATUS adapt;

[MarshalAs(UnmanagedTypeByValArray, SizeConst = (int)NCBCONSTNUM_NAMEBUF)]

public NAME_BUFFER[] NameBuff;

}

public class Win32API

{

[DllImport("NETAPI32DLL")]

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;

Ncbncb_command = (byte)NCBCONSTNCBENUM;

cb = MarshalSizeOf(typeof(LANA_ENUM));

Ncbncb_buffer = MarshalAllocHGlobal(cb);

Ncbncb_length = (ushort)cb;

uRetCode = Win32APINetbios(ref Ncb);

lenum = (LANA_ENUM)MarshalPtrToStructure(Ncbncb_buffer, typeof(LANA_ENUM));

MarshalFreeHGlobal(Ncbncb_buffer);

if (uRetCode != (short)NCBCONSTNRC_GOODRET)

return "";

for (int i = 0; i < lenumlength; i++)

{

Ncbncb_command = (byte)NCBCONSTNCBRESET;

Ncbncb_lana_num = lenumlana[i];

uRetCode = Win32APINetbios(ref Ncb);

if (uRetCode != (short)NCBCONSTNRC_GOODRET)

return "";

Ncbncb_command = (byte)NCBCONSTNCBASTAT;

Ncbncb_lana_num = lenumlana[i];

Ncbncb_callname[0] = (byte)'';

cb = MarshalSizeOf(typeof(ADAPTER_STATUS)) + MarshalSizeOf(typeof(NAME_BUFFER)) (int)NCBCONSTNUM_NAMEBUF;

Ncbncb_buffer = MarshalAllocHGlobal(cb);

Ncbncb_length = (ushort)cb;

uRetCode = Win32APINetbios(ref Ncb);

adapteradapt = (ADAPTER_STATUS)MarshalPtrToStructure(Ncbncb_buffer, typeof(ADAPTER_STATUS));

MarshalFreeHGlobal(Ncbncb_buffer);

if (uRetCode == (short)NCBCONSTNRC_GOODRET)

{

if (i > 0)

addr += ":";

addr = stringFormat("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}",

adapteradaptadapter_address[0],

adapteradaptadapter_address[1],

adapteradaptadapter_address[2],

adapteradaptadapter_address[3],

adapteradaptadapter_address[4],

adapteradaptadapter_address[5]);

}

}

}

catch

{ }

return addrReplace(' ', '0');

}

}

}

使用方法举例:

[c-sharp] view plain copy

//获取硬盘序列号

HardwareHardwareInfo hardwareInfo = new HardwareHardwareInfo();

string hardDiskID = hardwareInfoGetHardDiskID();

SystemConsoleWriteLine(hardDiskID);

//获取CPU序列号

string cpuID = hardwareInfoGetCpuID();

SystemConsoleWriteLine(cpuID);

//获取硬盘序列号HardwareHardwareInfo hardwareInfo = new HardwareHardwareInfo();string hardDiskID = hardwareInfoGetHardDiskID();SystemConsoleWriteLine(hardDiskID);//获取CPU序列号string cpuID = hardwareInfoGetCpuID();SystemConsoleWriteLine(cpuID);

string GetCpuID()

{

try

{

//获取CPU序列号代码

string cpuInfo = "";//cpu序列号

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mcGetInstances();

foreach(ManagementObject mo in moc)

{

cpuInfo = moProperties["ProcessorId"]ValueToString();

}

moc=null;

mc=null;

return cpuInfo;

}

catch

{

return "unknow";

}

finally

{

}

}

以上就是关于c#中如何获得 cpu型号全部的内容,包括:c#中如何获得 cpu型号、C#如何获取客户端CPU,硬盘,MAC序列号、如何破解c#获取cpu id代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9326959.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存