取硬盘序列号
网上流传的方法:
public string getHardDiskID()
{
ManagementClass searcher = new ManagementClass("WIN32_DiskDrive");
ManagementObjectCollection moc = searcher.GetInstances();
string strHardDiskID = "";
foreach (ManagementObject mo in moc)
{
strHardDiskID = mo["Model"].ToString().Trim();
break;
}
return strHardDiskID;
}
是错的,该方法取到的是硬盘的型号,并不是序列号,msdn上的描述:Manufacturer's model number of the disk drive.
正确方法:
ManagementClass searcher = new ManagementClass("WIN32_PhysicalMedia");
ManagementObjectCollection moc = searcher.GetInstances();
//硬盘序列号
string strHardDiskID = "";
foreach (ManagementObject mo in moc)
{
try
{
strHardDiskID += mo["SerialNumber"].ToString().Trim();
break;
}
catch
{
//有可能是u盘之类的东西
}
}
msdn的描述:Manufacturer-allocated number used to identify the physical media,该号为厂商分配的标志,也就是说没有规定它必须是唯一的,只是厂商的标志而已,但是对于硬盘来说该号作为序列号的重复的可能性很小,除非有两家硬盘厂商的命名规则一模一样,
取cpu编号:
网上流传的方法:
public string getCPUID()
{
ManagementClass searcher = new ManagementClass("WIN32_Processor");
ManagementObjectCollection moc = searcher.GetInstances();
string strCPUID = "";
foreach (ManagementObject mo in moc)
{
strCPUID = mo["ProcessorId"].ToString().Trim();
break;
}
return strCPUID;
}
也是错的,
msdn上的描述:Processor information that describes the processor features. For an x86 class CPU, the field format depends on the processor support of the CPUID instruction. If the instruction is supported, the property contains 2 (two) DWORD formatted values. The first is an offset of 08h-0Bh, which is the EAX value that a CPUID instruction returns with input EAX set to 1. The second is an offset of 0Ch-0Fh, which is the EDX value that the instruction returns. Only the first two bytes of the property are significant and contain the contents of the DX register at CPU reset—all others are set to 0 (zero), and the contents are in DWORD format.
它只是描述一个型号的号码而已。
正确的应该是:WIN32_Processor.UniqueId
msdn上的描述:Globally unique identifier for the processor. This identifier may only be unique within a processor family. This property is inherited from CIM_Processor.
这个号也是针对厂商唯一的,不过生产cpu的厂商………,应该不会重吧。
取网卡编号:
public string getNetID()
{
ManagementClass searcher = new ManagementClass("WIN32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = searcher.GetInstances();
string strNetID = "";
foreach (ManagementObject mo in moc)
{
if ((Boolean)mo["IpEnabled"])
{
strNetID = mo["MacAddress"].ToString();
break;
}
}
return strNetID;
}
网卡号取出来的是mac地址,是唯一的,但是用户是可以修改的,而且机器可能有多个网卡,每次取出来的网卡号可能是不一样的(在多个网卡的情况下,只需要将网卡禁用再启动就可能导致取出来的mac地址不一样),
网络害人,网上流传的方法大都是这两种,同志们引以为戒!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nuey1985/archive/2010/01/04/5127748.aspx
分享到:
相关推荐
在 C# 中,我们可以使用 ManagementClass 和 ManagementObjectSearcher 类来获取硬件信息。ManagementClass 类提供了对管理类的访问,而 ManagementObjectSearcher 类则提供了对管理对象的搜索和访问。 获取 CPU ...
WMIPath(获取硬件信息) /// CPU 处理器 /// 物理内存条 /// 键盘 /// 点输入设备,包括鼠标 /// 软盘驱动器 /// 硬盘驱动器 /// 光盘驱动器 /// 主板 /// BIOS 芯片 /// 并口 /// 串口 /// ...
在C#编程中,获取系统硬件信息是一项常见的需求,这对于软件开发者来说至关重要,尤其是在开发需要与硬件交互的应用程序时。本教程将详细讲解如何利用C#来获取包括ID号、SKU在内的系统硬件信息,并鼓励读者根据示例...
以上代码展示了如何在C#中获取主机名、MAC地址、IP地址、主板信息和内存详情。这些方法结合使用,可以为你的应用程序提供全面的硬件信息报告。在实际应用中,可能需要根据具体需求进行适当的修改和优化。记得在运行...
在C#编程语言中,获取计算机硬件信息是常见的任务,这可以帮助开发者了解系统资源的状况,以便进行系统监控、性能优化或开发相关应用。本文将深入探讨如何利用C#来获取计算机的硬件信息,包括CPU、内存、硬盘、显卡...
在C#中获取硬件信息主要涉及以下几个核心知识点: 1. **ManagementObjectSearcher类**:这是.NET Framework中System.Management命名空间的一部分,用于执行WMI(Windows Management Instrumentation)查询。WMI是...
一个开源的C#语言的硬件信息展示项目。 是通过C语言访问硬件底层,通过C#对数据处理和展示。 项目SVN: http://open-hardware-monitor.googlecode.com/svn/trunk
接下来,让我们看看如何使用OpenHardware库获取硬件信息: ```csharp using OpenHardwareMonitor.Hardware; // 初始化监控器 IHardware computer = new Computer(); computer.Open(); // 遍历所有硬件设备 ...
1. **硬件信息API**:C#本身并不直接提供获取硬件信息的内置功能,但可以利用Windows API(如WMI,即Windows Management Instrumentation)来获取。WMI是微软提供的一个全面的管理框架,允许开发者访问系统、硬件和...
C#获取硬件代码相当不错,可以用于软件加密等等
本篇文章将详细介绍如何利用C#中的`System.Management`命名空间来获取这些硬件信息,并提供具体的代码示例。 ### 二、关键技术点 #### 1. 获取CPU ID CPU ID是指处理器的唯一标识符,可以用来识别特定的处理器型号...
在C#中,有时我们需要获取计算机的硬件相关信息,例如CPU编号、主板ID、硬盘ID、网卡地址以及内存信息。这些信息在系统诊断、软件授权、设备识别等方面都有重要的作用。本文将详细介绍如何利用C#来获取这些硬件编号...
这在系统管理和监控中非常有用,例如可以用于自动收集服务器硬件信息、进行远程监控等场景。本篇文章介绍了如何定义WMI查询路径、创建WMI对象以及获取具体的硬件配置信息。希望这些内容能帮助您更好地理解和应用C#与...
在C#中,我们可以通过以下几种方式获取这些信息: 1. **CPU信息**:我们可以使用`System.Management`命名空间中的`ManagementObjectSearcher`类来查询WMI(Windows Management Instrumentation)数据。例如,以下...
在C#中,可以通过`System.Management`命名空间下的`ManagementClass`和`ManagementObject`类来实现这一功能。下面是对`getID_CpuId`方法的具体分析: ```csharp public static string getID_CpuId() { string ...
在IT领域,获取硬件系统信息是一项基础且重要的任务,尤其对于开发者来说,了解如何通过编程方式获取这些数据是很有价值的。在这个场景中,我们关注的是使用C#语言来实现这一功能。C#是一种强大的、面向对象的编程...
- 使用`System.Timers.Timer`类可以创建一个定时器,定期调用获取硬件信息的函数,并将结果显示在UI界面上。 - UI界面的更新需要注意线程同步问题,避免阻塞主线程,可以使用`Control.BeginInvoke`或`Invoke`方法...
在C#代码中,创建一个`Computer`对象,然后使用`GetHardware`方法获取硬件列表,并遍历这些硬件,查找我们需要的CPU或其他硬件信息: ```csharp Computer computer = new Computer(); computer.Open(); foreach ...
C#中,我们可以使用WMI查询来获取CPU温度。通过连接到`Win32_PerfFormattedData_Counters_ProcessorInformation`类,我们可以获取到处理器的性能计数器信息。另外,也可以使用OpenHardwareMonitor库,该库提供了更...