zoukankan
html css js c++ java
(轉)Net中获取CPU编号
].Net中获取CPU编号
using
System;
using
System.Runtime.InteropServices;
using
System.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
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(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
byte
ncb_command;
public
byte
ncb_retcode;
public
byte
ncb_lsn;
public
byte
ncb_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
byte
ncb_rto;
public
byte
ncb_sto;
public
IntPtr ncb_post;
public
byte
ncb_lana_num;
public
byte
ncb_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
'
);
}
}
}
欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/
查看全文
相关阅读:
IT名词备忘录——汇编
逆转链表的实现
编写安全的代码的一些技巧
extern c 谈
回调函数
职场必备八个黄金句型
CString类的用法介绍和自己动手写的CString类
61条面向对象设计的经验原则(转贴)
sprintf的用法
VisualStudioVS2010统计代码行数
原文地址:https://www.cnblogs.com/Tonyyang/p/725734.html
最新文章
ACM HDU 1016 Prime Ring Problem
ACM HDU 3668Volume
ACM POJ 2965 The Pilots Brothers' refrigerator
关于qsort的完整版
ACM HDU 1020Encoding
ACM POJ 1328Radar Installation
【MyEcplise hibernate tools】hibernate tools的使用以及错误
【maven】maven各种奇葩问题
[Java] 从图片URL中读取字节数组
函数重载
热门文章
POJ 3613
HDU 3177
HDU 1869
HDU 1081
HDU 2048
HDU 1896
inline和默认形参
HDU 1274(展开字符串)
数的1、2、3次方是否均为回文数
你最需要注意的11条要点for C++
Copyright © 2011-2022 走看看