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/
查看全文
相关阅读:
JavaScript根据CSS的Media Queries来判断浏览设备的方法
JavaScript API 设计原则
高性能 CSS3 动画
CSS代码实例:用CSS代码写出的各种形状图形
frontpage 2010.2003绿色版
Web前端年后跳槽必看的各种面试题
[ksm][数学] Jzoj P5810 简单的玄学
[分治] Jzoj P5807 简单的区间
[dfs][bfs] Jzoj P5806 简单的操作
[dp] Jzoj P5804 简单的序列
原文地址:https://www.cnblogs.com/Tonyyang/p/725734.html
最新文章
Unity3D_(插件)DOTween动画插件
Unity3D_(物理引擎)Rigidbody组件
原生Js_使用setInterval() 方法实现图片轮播功能
Unity3D_(游戏)贪吃蛇
R_Studio(学生成绩)使用主成分分析实现属性规约
R_Studio(癌症)以等宽类别值、自定义类别值、等频类别值(分为5类)
dedecms手机站要同步pc站的图片
隔行换色(2)
隔行换色(1)
检测浏览器内核
热门文章
问 如何使用css将select的边框以及右边的小三角形去掉?
JS产生四位随机数的方法
css 字间距离_css 字体字符间距设置
http 301、304状态码
◆ 火狐浏览器去除JS方法:
织梦dedecms调用栏目的SEO标题、描述、关键字的方法
css控制文字自动换行
CSS让div背景透明
css3.0 动画在线演示工具 对于初学者不妨看看
快速解决Canvas.toDataURL 图片跨域的问题
Copyright © 2011-2022 走看看