请问怎么查看电脑苹果主板有ID的ID,是苹果主板有ID不是主机哈

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
C#获取电脑硬件信息(CPUID、主板ID、硬盘ID、BIOS编号)
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
C 获取电脑硬件信息(CPUID、主板ID、硬盘ID、BIOS编号)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3460)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Delphi怎样获取(读取)电脑主板的BIOS信息(即序列号)',
blogAbstract:'声明:本模块从论坛上摘抄整理成一篇Blog
基本没有进行任何测试,真正用于使用还需要进一步细化。
欢迎大家补充
**********************************************************************************
1、读取主板序列号
2、AWard Bios密码读取
3、读取BIOS信息
4、获取BIOS日期信息
=========================================
1、读取主板序列号
blogTag:'',
blogUrl:'blog/static/8',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:8,
permalink:'blog/static/8',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}读懂主板的“身份证”―BIOS-ID(多图)_操作系统_网上学园_科技时代_新浪网
读懂主板的“身份证”―BIOS-ID(多图)
http://www.sina.com.cn &14:12 《电脑爱好者》
  文/望月狼、昔时昔日  由于每一块主板的设计和制造都有不同,所以BIOS设计厂商要为数以百计的主板厂商来编制不同BIOS代码,所以为了便于区分,各BIOS制造厂商为自己的BIOS编制了一套用代码来识别不同主板身份的BIOS-ID,通过这些ID码就可以识别出该块主板所采用的芯片组、I/O控制器、主板厂商和生产日期等信息。只要了解了这些ID的编码规范和含义就可以读懂一块陌生的主板的信息。
  一、认识BIOS
  对于初学电脑的人来说,BIOS是神秘而且不敢乱动的,的确设置好并且使用正常的BIOS是不需要常常去更改的。然而作为发烧级玩家,在需要优化系统、加强功能、控制硬件设备甚至需要监控设备工作情况时就需要与BIOS打交道了。
  目前,世界上编写BIOS指令有三家著名的厂商,他们是AWARD、AMI和Phoenix,前段时间AWARD与Phoenix已经合二为一,所以目前市面上最为常见的只有两家了,AMI和Phoenix-AWARD。
  大家都知道,一款主板芯片组发布后,其他成品主板生产厂商纷纷推出自己的产品。对于BIOS来说,一般都是基于公版的基础上为自家的主板定制BIOS,这样可以使一些特殊的硬件发挥功效。比如加入RAID功能、硬件监控功能、个性LOGO等特殊功能,以突出自己的个性化设计。这时BIOS设计厂商必须为每个主板厂商定制不同的BIOS代码,以适应不同功能、不同款型的主板。而在其间往往都会有一个“磨合”的过程,所以才会常常有新的BIOS可以升级,主板的BIOS因而有了不同的版本。
  BIOS芯片的封装
  芯片的封装形式较多,一般有DIP、PLCC、TSOP等。但要注意,仅仅是封装不同而已,对于同一种型号的芯片,不论是什么封装形式,其管脚的功能都是一一对应的。
  二、查看BIOS-ID
  要想看到BIOS-ID很简单,启动计算机时,先要进行显卡测试,这个时间很短暂,一般只有一、二秒钟,然后开始进行到自检设备,包括内存、硬盘、软驱等。就在这时,你就可以按下键盘的“Pause”键暂停计算机的检测,这时屏幕最下端左侧的一段字符就是BIOS-ID。
  AWARD BIOS和AMI BIOS都有一个惟一的BIOS-ID。但是少数的主板厂商及一些原装机厂商会删掉开机时所显示的BIOS-ID。这时你只要下载一个查看BIOS-ID的软件(如:CTBIOS,下载地址http://file.mydrivers.com/tools/board/ctbios.zip),然后在DOS下运行该软件,就可以得到主板包括BIOS-ID在内的诸多信息。
  1.识别AWARD的BIOS-ID
  AWARD的BIOS-ID一般分为以下几个部分(以美达S845E主板为例):
  ①BIOS修正日期
  格式为“月/日/年”,如“06/06/2002”表示此BIOS的修正日期为日。
  ②芯片组标识符
  不同的主板对应BIOS此字段的信息也会有所不同。如上例i845-W83627是代表芯片组为Intel 845系列,主板上的I/O芯片是采用华邦公司的W83627系列。
  ③芯片组编码
  前五位字符代表主板采用的芯片组类型。例如:6A61A代表nVIDIA nForce芯片组;6A61B代表nVIDIA nForce2芯片组;6A660代表ATi A3芯片组;6A69L代表Intel 820芯片组;6A69M代表Intel 810芯片组;6A69R代表Intel 815/815E/815EP芯片组;6A69S代表Intel 850/860芯片组;6A69V代表Intel 845/845E/845G/845GE/845GL/845PE芯片组;6A69W代表Intel E芯片组;6A6IR代表SiS 630芯片组;6A6IS代表SiS 730/730S芯片组;6A6IT代表SiS 635/635T芯片组;6A6IU代表SiS 733/735芯片组;6A6IX代表SiS 645/645DX/651芯片组;6A7I0代表SiS 648芯片组;6A6KT代表ALi MAGiK 1芯片组;6A6LG代表VIA VT82C693A/VT82C694A芯片组;6A6LI代表VIA PLE133芯片组;6A6LJ代表VIA VT82C694XDP/MP芯片组;6A6LK代表VIA KX133芯片组;6A6LL代表VIA PM133芯片组;6A6LM代表VIA KT133/KT133A/KT133E芯片组;6A6LN代表VIA KM133/KL133/KLE133芯片组;6A6LO代表VIA PLE133芯片组;6A6LU代表KM266/KL266芯片组;6A6LV代表VIA KT266/KT266A/KT333芯片组;6A6LW代表VIA P4X266/P4X266A芯片组;6A6LY代表VIA KT400芯片组;6A6S2代表AMD 751芯片组;6A6S6代表AMD 760/761芯片组;6A6S7代表AMD 762芯片组。
  其中,第一位代表AWARD BIOS的内核版本,1代表V4.2之前的版本、2代表V4.5x版本、6代表V6.00版本;第二位代表AWARD BIOS支持的总线类型,A代表ISA/PCI、B代表EISA/PC、C代表ISA/PM。
  ④厂商编码
  第六、七位字符代表主板的生产厂商。例如:A0和P4代表ASUS(华硕);A1代表ABIT(升技);AB代表AOpen(建基);B0代表Bioster(映泰);C3代表Chaintech(承启);D4代表DFI(钻石);E1代表ECS(精英);F0代表FIC(大众);G0代表Gigabyte(技嘉);J1代表Jetway(捷波);M4代表MSI(微星);PA代表Epox(磐正);Q1代表QDI(联想)。
  ⑤模型ID是指特定的制造商。
  ⑥BIOS版本是指起始的BIOS版本,一般为00。
  2.识别AMI的BIOS-ID
  同AWARD类似,AMI也特别编制了以区分主板厂商的BIOS-ID,当然,AMI的BIOS-ID与AWARD是完全不同的。那该如何区分AMI的BIOS-ID呢?AMI的BIOS-ID看起来比较长,而且有一部分编码各个厂商也不统一,所以看起来没有AWARD的BIOS-ID简洁,但也是比较容易识别的!AMI的BIOS-ID一般分为以下几个部分(以微星655Max主板为例):
  ①处理器级别
  5代表主板适用的处理器相当于Intel 586级别的第五代处理器;6代表主板适用的处理器相当于Intel PentiumⅡ级别以上的第六代处理器。
  ②BIOS芯片容量
  主板所采用的BIOS芯片容量,0代表64KB;1代表128KB(后来把1代表1024KB);2代表256KB(后来把2代表2048KB);3代表512KB;4代表1024KB。
  ③BIOS修正版本
  一般是以格式为“月日”的四个字符命名,例如:0225表示2月25日修正的BIOS。
  ④厂商编码
  一般前2个数字为00,后面4位数字代表主板的生产厂商。例如:1121代表FIC(大众);或9999代表MSI(微星);1128代表Chaintech(承启);1199代表Gigabyte(技嘉);1223代表Biostar(映泰);1247代表ABIT(升技);1276代表Jetway(捷波);1292代表ASUS(华硕);1519代表Epox(磐正);1770代表AOpen(建基);8003代表QDI(联想)。
  ⑤电脑启动的设置状态
  每个数字分别代表电脑启动时的设置,1代表是,0代表否。其中第1个数字表示启动时遇到错误后是否暂停;第2个数字表示每次启动是否都要初始化CMOS RAM的内容;第3个数字表示是否隐蔽键盘控制器的22、23两个管脚输出;第4个数字表示BIOS/键盘控制器中是否支持鼠标;第5个数字表示启动时遇到错误后是否等待;第6个数字表示启动时自检到软驱有错误后是否报告;第7个数字表示启动时自检到显示错误后是否报告;第8个数字表示启动时自检到键盘错误后是否报告。
  ⑥BIOS出厂日期
  它的格式为“月日年”,如“040201”表示此BIOS出厂日期为日。
  ⑦芯片组名称
  在这个字段中,字符的数目不能确定,一般可以从中看到关于芯片组的信息,如SiS655表示此主板是采用SiS655芯片组。
  ⑧键盘控制器版本号
  了解了这些BIOS-ID,你可能就会关注起自己的主板了,但你可能遇到这种情况,你的主板BIOS-ID的编码与本文中所提到的并不相同,在编码中只有日期、芯片组和末尾的00,没有其他的信息,这是为什么呢?这是因为生产主板的厂商数量非常多,一些有规模的厂商才可以得到授权的BIOS-ID,而一些小厂商却没有这种待遇,所以他们生产主板多数参照名厂来生产,因为设计相同,所以在BIOS方面也可使用这些主板厂商的BIOS,但因为版权及销售的问题,这些厂商一般都将BIOS-ID的编码中有关厂商信息更改掉!所以就有了这样的结果了!当你遇到这种BIOS的主板时,很抱歉,想了解它的厂商信息是比较难的!所以,如果你的主板拥有自己的BIOS-ID其实是一种身份的象征,而且这也可以成为你选择主板的一个秘密依据。
  三、疯狂!?修改BIOS-ID
  打造个性电脑是每一个发烧级玩家的梦想,从Windows的启动画面到开机LOGO我们都在彰显着自己的个性,那么我们有没有可能改造厂商制定下的BIOS-ID呢?如果让BIOS-ID显示自己的名字或喜欢的一句话那就太爽了!令人兴奋的是,答案是肯定的!
  不断的探索总是让我们得到更多的乐趣,下面就以AWARD BIOS的BIOS-ID修改方法给大家作一个举例。
  首先到自己主板厂商的主页上去查找资料,确定自己主板的BIOS版本,然后就可以开始动手了!AWARD BIOS修改的详细步骤如下:
  1.所需文件
  (1)awdflash.exe(下载地址http://file.mydrivers.com/tools/board/awd809.EXE)
  (2)modbin.exe(下载地址http://file.mydrivers.com/tools/board/MODBIN6.exe)
  这个软件有两个版本。如果你的AWARD BIOS是4.x版,就用modbin;如果是6.x版本,就用modbin6。是什么版本,也可以在开机启动时看出来!这里以modbin6为例。
  2.具体过程
  第一步:进入纯DOS方式,不是Windows下的DOS窗口;
  第二步:运行awdflash /sy读出你主板上的BIOS,并存成awdbios.bin;
  第三步:运行modbin6 awdbios.bin;
  第四步:选“Change BIOS Message”,然后在最前面加入“BangNi.net”(或其他任意字符),但最好不要太长,以免出现错误。后面的代码最好不要修改,以免以后不方便识别自己的BIOS-ID。回车确认后,按“Alt+F”组合键,然后选择“Save”。
  第五步:运行awdflash awdbios.bin写入你修改过后的BIOS就可以了。
  四、结语
  从了解BIOS到升级甚至是修改BIOS我想大家一定都能有所了解了,BIOS是电脑的一个最为基本也最为重要的系统,了解它、关心它、用好它是一个合格电脑玩家的必备条件之一。当然我还是要在这里提醒大家,升级BIOS具有一定危险性的,切勿轻易尝试,否则出现电脑不能启动等故障,厂家是不会保修的。特别是一些品牌机,如果自行升级BIOS造成的故障厂家是不会负责的,而且用户将失去保修的资格,请大家慎之!
【】【】【】【】
新 闻 查 询
 相关链接 ( 14:11)
 电话:010-8   欢迎批评指正 |
Copyright & 1996 - 2003 SINA Inc. All Rights Reserved 新浪网最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习、验证。验证是分别在4台电脑,XP SP3系统中进行,特将验证过程记录于此。
说明:电脑1(联想品牌电脑);电脑2(HP品牌电脑);电脑3(联想品牌电脑);电脑4(兼容机);获取CPU编号:ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
string strID =
foreach( ManagementObject mo in moc )
strID = mo.Properties["ProcessorId"].Value.ToString();
textBox1.Text +=
"CPU ID:" + strID;
返回结果:
电脑1:CPU ID:BFEBFBFF00000F27
电脑2:CPU ID:BFEBFBFF00000F27
电脑3:CPU ID:BFEBFBFF00000F29
电脑4:CPU ID:BFEBFBFF00000F29获取主板编号:ManagementClass mc = new ManagementClass("Win32_BaseBoard");
ManagementObjectCollection moc = mc.GetInstances();
string strID =
foreach( ManagementObject mo in moc )
strID = mo.Properties["SerialNumber"].Value.ToString();
textBox1.Text +=
"主板 ID:" + strID;
返回结果:
电脑1:主板 ID:
电脑2:主板 ID:CN
电脑3:主板 ID:AZF
电脑4:主板 ID:
获取硬盘编号:ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
//网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。
ManagementObjectCollection moc = mc.GetInstances();
string strID =
foreach( ManagementObject mo in moc )
strID = mo.Properties["SerialNumber"].Value.ToString();
textBox1.Text +=
"硬盘 ID:" + strID;
ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
//网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。
ManagementObjectCollection moc = mc.GetInstances();
string strID =
foreach( ManagementObject mo in moc )
strID = mo.Properties["SerialNumber"].Value.ToString();
textBox1.Text +=
"硬盘 ID:" + strID;
返回结果:
电脑1:硬盘 ID:2020
电脑2:硬盘 ID:WD-WMAJD1092385
电脑3:硬盘 ID:4a20
电脑4:硬盘 ID:8014获取BIOS编号:ManagementClass mc = new ManagementClass("Win32_BIOS");
ManagementObjectCollection moc = mc.GetInstances();
string strID =
foreach( ManagementObject mo in moc )
strID = mo.Properties["SerialNumber"].Value.ToString();
textBox1.Text +=
"BIOS ID:" + strID;
返回结果:
电脑1:BIOS ID:
电脑2:BIOS ID:CN
电脑3:BIOS ID:
电脑4:BIOS ID:
由以上各步看出,通过Win32_Processor获取CPUID不正确,或者说Win32_Processor字段就不包含CPU编号信息。
通过Win32_BaseBoard获取主板信息,但不是所有的主板都有编号,或者说不是能获取所有系统主板的编号。
通过Win32_PhysicalMedia获取硬盘编号应该没有问题。但网上说可以通过Win32_DiskDrive获取,其实所得信息根本不包含SerialNumber。
通过Win32_BIOS获取BIOS信息,基本和获取主板信息差不多。就是说:不是所有的主板BIOS信息都有编号。
另外,可以将通过以上各字段所得信息输出,逐个查看所有信息 属性和对应的值。代码如下:ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach( ManagementObject mo in moc )
textBox1.Text += "/r/n============CUP信息===========";
foreach (PropertyData pd in mo.Properties)
textBox1.Text += "/r/n" + pd.Name + "/t";
if (pd.Value != null)
textBox1.Text += pd.Value.ToString();
textBox1.Text += "/r/n/r/n=======================";
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach( ManagementObject mo in moc )
textBox1.Text += "/r/n============CUP信息===========";
foreach (PropertyData pd in mo.Properties)
textBox1.Text += "/r/n" + pd.Name + "/t";
if (pd.Value != null)
textBox1.Text += pd.Value.ToString();
textBox1.Text += "/r/n/r/n=======================";
===============================================首先要添加对System.Management.dll的引用using Susing System.Collections.Gusing System.Lusing System.Tusing System.Dusing System.Data.SqlCusing System.Runtime.InteropSusing System.Security.Cusing Microsoft.Win32;using System.Musing System.IO;namespace 哈哈{
class DataOperate
private SqlConnection conn =
public DataOperate(string connStr)
conn = new SqlConnection();
conn.ConnectionString = connS
private void ColseConnnection()
if (conn.State == ConnectionState.Open)
conn.Close();
private void OpenConnection()
if (conn.State == ConnectionState.Closed)
conn.Open();
/// &summary&
/// 这里是获取cpu的id
/// &/summary&
/// &returns&&/returns&
public string GetProcessID()
string str = string.E
ManagementClass mcCpu = new ManagementClass("win32_Processor");
ManagementObjectCollection mocCpu = mcCpu.GetInstances();
foreach (ManagementObject m in mocCpu)
str = m["Processorid"].ToString().Trim().Substring(0, 8);//BFEBFBFF00000F65
catch (Exception ex)
return "likeshan";
/// &summary&
/// 获取硬盘id
/// &/summary&
/// &returns&&/returns&
public string GetHardDiskID()
string hdId = string.E
ManagementClass hardDisk = new ManagementClass("win32_DiskDrive");
ManagementObjectCollection hardDiskC = hardDisk.GetInstances();
foreach (ManagementObject m in hardDiskC)
//hdId = m["Model"].ToString().Trim();
hdId = m.Properties["Model"].Value.ToString();//WDC WD800BB-56JKC0
return hdId;
return "likeshan";
/// &summary&
/// 获取网卡地址
/// &/summary&
/// &returns&&/returns&
public string GetNetwordAdapter()
string MoAddress = string.E
ManagementClass networkAdapter = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection adapterC = networkAdapter.GetInstances();
foreach (ManagementObject m in adapterC)
if ((bool)m["IPEnabled"] == true)
MoAddress = m["MacAddress"].ToString().Trim();
m.Dispose();
return MoA
return "likeshan";
public string GetBaseboard()
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_baseboard");
string serNumber = string.E
string manufacturer = string.E
string product = string.E
foreach (ManagementObject m in mos.Get())
serNumber = m["SerialNumber"].ToString();//序列号
manufacturer = m["Manufacturer"].ToString();//制造商
product = m["Product"].ToString();//型号
return serNumber + " " + manufacturer + " " +
return "likeshan";
/// &summary&
/// 加密算法(利用到了cpuid)
/// &/summary&
/// &param name="data"&要加密的字符串&/param&
/// &returns&&/returns&
public string Encode(string data)
byte[] akey = ASCIIEncoding.ASCII.GetBytes(GetProcessID());
byte[] aIV = ASCIIEncoding.ASCII.GetBytes(GetProcessID());
using (DESCryptoServiceProvider CP = new DESCryptoServiceProvider())
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, CP.CreateEncryptor(akey, aIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cs);
sw.Write(data);
sw.Flush();
cs.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
/// &summary&
/// 加密算法(利用cpuid)
/// &/summary&
/// &param name="data"&需要解密的字符串&/param&
/// &returns&&/returns&
public string Decode(string data)
byte[] akey = ASCIIEncoding.ASCII.GetBytes(GetProcessID());
byte[] aIV = ASCIIEncoding.ASCII.GetBytes(GetProcessID());
byte[] Enc =
Enc = Convert.FromBase64String(data);
DESCryptoServiceProvider cp = new DESCryptoServiceProvider();
MemoryStream ms=new MemoryStream(Enc);
CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(akey, aIV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
return reader.ReadToEnd();
============================================== 首先需添加对System.Management的引用。 using System.Runtime.InteropS
using System.M
namespace Hardware
/// &summary&
/// HardwareInfo 的摘要说明。
/// &/summary&
public class HardwareInfo
//取机器名
public string GetHostName()
return System.Net.Dns.GetHostName();
//取CPU编号
public String GetCpuID()
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
String strCpuID =
foreach (ManagementObject mo in moc)
strCpuID = mo.Properties["ProcessorId"].Value.ToString();
return strCpuID;
return "";
}//end method
//取第一块硬盘编号
public String GetHardDiskID()
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
String strHardDiskID =
foreach (ManagementObject mo in searcher.Get())
strHardDiskID = mo["SerialNumber"].ToString().Trim();
return strHardDiskID;
return "";
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_
public byte rev_
public byte reserved0;
public byte adapter_
public byte rev_
public ushort frmr_
public ushort frmr_
public ushort iframe_recv_
public ushort xmit_
public uint xmit_
public uint recv_
public ushort iframe_xmit_
public ushort recv_buff_
public ushort t1_
public ushort ti_
public uint reserved1;
public ushort free_
public ushort max_cfg_
public ushort max_
public ushort xmit_buf_
public ushort max_dgram_
public ushort pending_
public ushort max_cfg_
public ushort max_
public ushort max_sess_pkt_
public ushort name_
[StructLayout(LayoutKind.Sequential)]
public struct NAME_BUFFER
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NCBNAMSZ)]
public byte[]
public byte name_
public byte name_
[StructLayout(LayoutKind.Sequential)]
public struct NCB
public byte ncb_
public byte ncb_
public byte ncb_
public byte ncb_
public IntPtr ncb_
public ushort ncb_
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NCBNAMSZ)]
public byte[] ncb_
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NCBNAMSZ)]
public byte[] ncb_
public byte ncb_
public byte ncb_
public IntPtr ncb_
public byte ncb_lana_
public byte ncb_cmd_
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public byte[] ncb_
public IntPtr ncb_
[StructLayout(LayoutKind.Sequential)]
public struct LANA_ENUM
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.MAX_LANA)]
public byte[]
[StructLayout(LayoutKind.Auto)]
public struct ASTAT
public ADAPTER_STATUS
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NUM_NAMEBUF)]
public NAME_BUFFER[] NameB
public class Win32API
[DllImport("NETAPI32.DLL")]
public static extern char Netbios(ref NCB ncb);
public string GetMacAddress()
string addr = "";
NCB Ncb = new NCB();
char uRetC
Ncb.ncb_command = (byte)NCBCONST.NCBENUM;
cb = Marshal.SizeOf(typeof(LANA_ENUM));
Ncb.ncb_buffer = Marshal.AllocHGlobal(cb);
Ncb.ncb_length = (ushort)
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. 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)
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]);
return addr.Replace(' ', '0');
使用方法举例:
Hardware.HardwareInfo hardwareInfo = new Hardware.HardwareInfo();
string hardDiskID = hardwareInfo.GetHardDiskID();
System.Console.WriteLine(hardDiskID);
//获取CPU序列号
string cpuID = hardwareInfo.GetCpuID();
System.Console.WriteLine(cpuID);
//获取硬盘序列号Hardware.HardwareInfo hardwareInfo = new Hardware.HardwareInfo();string hardDiskID = hardwareInfo.GetHardDiskID();System.Console.WriteLine(hardDiskID);//获取CPU序列号string cpuID = hardwareInfo.GetCpuID();System.Console.WriteLine(cpuID);
========== 引用楼主的代码://定义DLL文件名,此文件路径要加到系统Path中
private const string _fileDll = @"CPUID_Util.dll";
//GetCPUID是 dll里面的一个方法
private const string _FountionName = @"GetCPUID";
[DllImport(_fileDll, EntryPoint = _FountionName, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
//C#中的申明
public static extern string
GetCPUID(string id);
//声明一个stringBuilder类型字符串
StringBuilder strcpu=new StringBuilder();
//将strcpu带入函数中
GetCPUID(strcpu); //此时的strcpu已经是cpuid了
Console.writeLine(strcpu);
================================== 多核系统中每个处理器的ID是不同的,在哪个处理器上执行得到的就是哪个处理器的ID,获取ID之前可以用SetThreadAffinityMask指定在哪个处理器上执行,这样才能确保每次得到相同的结果。
C#获取计算机硬件信息(CPU,网卡,硬盘,内存等)
using System.Collections.G
using System.L
using System.M
using Sy...
C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)说明
最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习、验证。验证是分别在4台电脑,XP SP3系统中进行,特将...
C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编
C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编
最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息...
获取CPU ID(本机)
public static string Get_CPUID()
//需要在解决方案中引...
C#获取当前主机硬件信息
获取计算机的相关硬件信息,CPU序列号、MAC地址、内外网ip、主机序列号等。...
C#获取机器硬件信息
前面已经讲过用C++获取机器硬件信息,但是实现起来太麻烦了。用C#实现起来就简单多了,代码如下:
string strVendor = &&;
MSDN上有一个获取CPU信息的例子如下:
// cpuid.cpp
// processor: x86, x64
// Use the __cpuid intrinsic to get infor...
以前一直以为每个CPU都有唯一的CPU ID,查了一些参考资料后才知道,对于Intel的cpu,pentium III以后就不再支持唯一的cpu标识了,只可查到有厂家、型号和支持的功能等信息。
没有更多推荐了,

我要回帖

更多关于 ID主板 的文章

 

随机推荐