首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取唯一的计算机id

获取唯一的计算机id
EN

Stack Overflow用户
提问于 2010-01-05 15:55:33
回答 11查看 110.4K关注 0票数 46

我想得到唯一的不可更改的机器id,如计算机的处理器序列号,用于分发软件而不复制。

我尝试使用处理器序列号和硬盘序列号,这些序列号在格式化和重新安装windows后都会发生变化。

你知道怎样才能得到一个不可更改的计算机序列号吗?

EN

回答 11

Stack Overflow用户

发布于 2019-03-21 04:23:37

也许最简单的方法就是。获取DeviceId Nuget包

并像这样使用它

代码语言:javascript
复制
string deviceId = new DeviceIdBuilder()
.AddMachineName()
.AddMacAddress()
.AddProcessorId()
.AddMotherboardSerialNumber()
.ToString();

您可以对生成ID的信息进行个性化设置

Github Project

票数 28
EN

Stack Overflow用户

发布于 2010-01-20 15:21:30

您可以使用WMI Code creator。我猜你可以有一个“密钥”的组合(processorid,mac和软件生成的密钥)。

代码语言:javascript
复制
using System.Management;
using System.Windows.Forms;

try
{
     ManagementObjectSearcher searcher = 
         new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor"); 

     foreach (ManagementObject queryObj in searcher.Get())
     {
         Console.WriteLine("-----------------------------------");
         Console.WriteLine("Win32_Processor instance");
         Console.WriteLine("-----------------------------------");
         Console.WriteLine("Architecture: {0}", queryObj["Architecture"]);
         Console.WriteLine("Caption: {0}", queryObj["Caption"]);
         Console.WriteLine("Family: {0}", queryObj["Family"]);
         Console.WriteLine("ProcessorId: {0}", queryObj["ProcessorId"]);
     }
}
catch (ManagementException e)
{
    MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}

Win32_Processor

彼得·布朗伯格的Retrieving Hardware Identifiers in C# with WMI

票数 18
EN

Stack Overflow用户

发布于 2010-01-05 16:37:09

如果您需要唯一ID,则必须首先确定唯一ID的定义。如果你想/打算将它用于版权保护机制,那么使用一些简单的东西。这是因为,如果有人真的想使用你的软件,他会找到一种方法来破坏你的保护,只要有足够的时间和技能。在唯一硬件ID的情况下,只要考虑一下虚拟机,你就会发现它可以欺骗任何东西,这样别人就可以篡改你的软件。

你不能从一台PC中学到很多东西,并认为它在整个生命周期内都是独一无二的。(硬件更改很可能需要在某些时候重新生成ID。)如果你需要这样的东西,你应该考虑使用身份验证USB加密狗,你可以发送给你的客户。

如果您只需要一些不难获得的唯一标识符,您可以使用MAC地址(不可靠)、操作系统序列号或域名和用户名,但所有这些都很容易被伪造。然而,如果你的主要目标是锁定未经授权的人,你就不会卖任何东西,因为如果你的软件很难安装、注册或从一台电脑转移到另一台电脑,没有人会想要使用你的软件,尽管最后的考虑是每台机器许可的一部分。(这种情况可能会经常发生。)

作为第一步,让它变得简单:使用在你的目标群体中不容易欺骗的简单的东西。(例如,域名和用户名不容易被企业客户欺骗,因为他们的PC运行在实施策略的更大环境中,等等)只要忘记其他的,直到你有了它。

也许你可以把他们锁在外面,但这并不意味着他们会购买你的软件;他们只是不再使用你的软件。你必须考虑的是,有多少潜在客户不愿意或不愿意付费,因为你让使用你的程序变得如此复杂。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2004666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档