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/
查看全文
相关阅读:
关于为什么window.frames[0].src不能获取src
div之间有间隙以及img和div之间有间隙的原因及解决方法
面试题14:给你一根长度为n的绳子,请把绳子剪成m段(m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],...,k[m]. * 请问k[0]*k[1]*...*k[m]可能的最大乘积是多少? * 例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18.
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格, 但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37), 因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
数据结构学习笔记:有序链表合并的函数
输入一个字符串,求出该字符串包含的字符集合
十六进制字符串转十进制
十进制转二进制、八进制、十六进制的经典程序
华为:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
笔试题扑克牌排序
原文地址:https://www.cnblogs.com/Tonyyang/p/725734.html
最新文章
Centos6 克隆后简单的网络配置
MySQL主从复制与读写分离
MySQL主从复制介绍:使用场景、原理和实践
Linux安装pdo_mysql模块
并发编程----多线程
并发编程----进程的介绍
并发编程----线程介绍
并发编程----互斥锁 队列 消费者模型
并发编程----pid 数据隔离 jion 属性 僵尸孤儿 守护进程
并发编程----操作系统详解和进程的介绍
热门文章
网编小练习来喽~~~
网络编程----基于udp协议的socket和socketserver实现并发
数据库的安装(Mac,win,Linux)
Mysql的基本操作指令
mac下安装mysql,连接出现Access denied for user 'root'@'localhost' (using password: YES),解决方法
自定义协议解决tcp协议的粘包问题
python正则表达式知识汇总
迭代器和迭代对象的详解与对比
GJM:用C#实现网络爬虫(一) [转载]
常见CSS注意问题
Copyright © 2011-2022 走看看