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/
查看全文
相关阅读:
MVC之路由规则 (自定义,约束,debug)
MCV之行为
mvc之页面强类型
Jquery异步上传图片
三层VS控制器
Oracle 表分区
C#编写的通过汉字得到拼音和五笔码
MYSQL存储过程学习
Sina App Engine(SAE)入门教程(9)- SaeMail(邮件)使用
状态CSS
原文地址:https://www.cnblogs.com/Tonyyang/p/725734.html
最新文章
图基本算法 图搜索(广度优先、深度优先)
图基本算法 图的表示方法 邻接矩阵 邻接表
HDU 1856 More is better,并查集应用
HDU 1198 Farm Irrigation 两种方法(dfs,并查集)
UVa 11300 Spreading The Wealth
hdu 1342 and poj 2245 Lotto,dfs
不逼自己一把怎么好难前进哪
avalon教程-简介
前端性能优化-gzip
前端性能优化-状态码200和304
热门文章
子元素滚动不影响父元素
crlf漏洞和XSS攻击
前端性能优化-keep-alive
前端性能优化-keep-alive
前端性能优化-状态码200和304
前端性能优化-Cookie
前端性能优化-域名解析
MVC执行过程
WebAPI
MVC之过滤器
Copyright © 2011-2022 走看看