如何在C#中快速获取硬件ID?
我需要在我的程序中将许可证与硬件 ID 绑定。我尝试使用 WMI,但仍然很慢。
例如,我需要 CPU、HDD 和主板信息。
I need in my program to tie a license to a hardware ID. I tried use WMI, but it still slow.
I need, for example, CPU, HDD, and motherboard info.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
有关更多详细信息,请参阅此链接
以下代码将为您提供 CPU ID:
需要命名空间
System.Management
有关硬盘 ID 和主板 ID 的详细信息,请参阅 此链接
要加快此过程,请确保不使用
SELECT *,但仅选择您真正需要的内容。仅在开发期间尝试找出需要使用的内容时才使用
SELECT *
,因为这样查询将花费更长的时间才能完成。For more details refer to this link
The following code will give you CPU ID:
namespace required
System.Management
For Hard disk ID and motherboard id details refer this-link
To speed up this procedure, make sure you don't use
SELECT *
, but only select what you really need. UseSELECT *
only during development when you try to find out what you need to use, because then the query will take much longer to complete.我来这里寻找同样的东西,然后找到了另一个解决方案。如果你们有兴趣,我会分享这个课程:
我不会为此获得任何荣誉,因为我发现了它 此处
它的效果比我预期的要快。没有显卡、mac 和驱动器 ID,我在大约 2-3 秒内获得了唯一 ID。加上上面的内容,我在大约 4-5 秒内就得到了它。
注意:添加对
System.Management
的引用。I got here looking for the same thing and I found another solution. If you guys are interested I share this class:
I won't take any credit for this because I found it here
It worked faster than I expected for me. Without the graphic card, mac and drive id's I got the unique ID in about 2-3 seconds. With those above included I got it in about 4-5 seconds.
Note: Add reference to
System.Management
.以下方法的灵感来自于一个相关(更一般)问题的此答案。
方法是读取注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
中的MachineGuid
值。该值是在操作系统安装期间生成的。使用这种方法,有几种方法可以解决每台机器的硬件 ID 的唯一性。一种方法是编辑注册表值,但这会给用户的计算机带来麻烦。另一种方法是克隆驱动器映像,该映像将复制
MachineGuid
值。然而,没有一种方法是防黑客的,这对于普通用户来说肯定足够好了。从好的方面来说,这种方法性能快速且易于实施。
The following approach was inspired by this answer to a related (more general) question.
The approach is to read the
MachineGuid
value in registry keyHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
. This value is generated during OS installation.There are few ways around the uniqueness of the Hardware-ID per machine using this approach. One method is editing the registry value, but this would cause complications on the user's machine afterwards. Another method is to clone a drive image which would copy the
MachineGuid
value.However, no approach is hack-proof and this will certainly be good enough for normal users. On the plus side, this approach is quick performance-wise and simple to implement.
我重构了 Alex Sutu 方法,使其代码更快、更简单:
I have refactored Alex Sutu approach to be faster and simpler code:
我们使用来自
Win32_processor
的处理器 ID 号 (ProcessorID
) 和来自Win32_ComputerSystemProduct
的通用唯一标识符 (UUID
) code>:以前,我们使用了组合:处理器 ID (
"Select ProcessorID From Win32_processor"
) 和主板序列号 ("SELECT SerialNumber FROM Win32_BaseBoard"
),但后来我们发现主板的序列号可能没有填写,也可能填写统一的值:因此,这种情况值得考虑。
另请记住,
ProcessorID
编号在不同计算机上可能相同。We use a combination of the processor id number (
ProcessorID
) fromWin32_processor
and the universally unique identifier (UUID
) fromWin32_ComputerSystemProduct
:Previously, we used a combination: processor ID (
"Select ProcessorID From Win32_processor"
) and the motherboard serial number ("SELECT SerialNumber FROM Win32_BaseBoard"
), but then we found out that the serial number of the motherboard may not be filled in, or it may be filled in with uniform values:Therefore, it is worth considering this situation.
Also keep in mind that the
ProcessorID
number may be the same on different computers.这里是一个 DLL,显示:
* 硬盘ID(写入硬盘IDE电子芯片的唯一硬件序列号)
* 分区 ID(卷序列号)
* CPU ID(唯一硬件ID)
* CPU供应商
* CPU运行速度
* CPU理论速度
* 内存负载(使用的总内存百分比 (%))
* 总物理内存(总物理内存以字节为单位)
* 可用物理内存(剩余物理内存以字节为单位)
* 页面文件总数(页面文件总数(以字节为单位))
* 可用页面文件(页面文件剩余字节数)
* Total Virtual(总虚拟内存,以字节为单位)
* 可用虚拟(剩余虚拟内存以字节为单位)
* Bios唯一识别号BiosDate
* Bios唯一识别号BiosVersion
* Bios唯一识别号BiosProductID
* Bios唯一识别码BiosVideo
(从原始网站抓取的文字)
它适用于 C#。
Here is a DLL that shows:
* Hard drive ID (unique hardware serial number written in drive's IDE electronic chip)
* Partition ID (volume serial number)
* CPU ID (unique hardware ID)
* CPU vendor
* CPU running speed
* CPU theoretic speed
* Memory Load ( Total memory used in percentage (%) )
* Total Physical ( Total physical memory in bytes )
* Avail Physical ( Physical memory left in bytes )
* Total PageFile ( Total page file in bytes )
* Available PageFile( Page file left in bytes )
* Total Virtual( Total virtual memory in bytes )
* Available Virtual ( Virtual memory left in bytes )
* Bios unique identification numberBiosDate
* Bios unique identification numberBiosVersion
* Bios unique identification numberBiosProductID
* Bios unique identification numberBiosVideo
(text grabbed from original web site)
It works with C#.