我想得到唯一的不可更改的机器id,如计算机的处理器序列号,用于分发软件而不复制。
我尝试使用处理器序列号和硬盘序列号,这些序列号在格式化和重新安装windows后都会发生变化。
你知道怎样才能得到一个不可更改的计算机序列号吗?
发布于 2019-03-21 04:23:37
也许最简单的方法就是。获取DeviceId Nuget包
并像这样使用它
string deviceId = new DeviceIdBuilder()
.AddMachineName()
.AddMacAddress()
.AddProcessorId()
.AddMotherboardSerialNumber()
.ToString();您可以对生成ID的信息进行个性化设置
发布于 2010-01-20 15:21:30
您可以使用WMI Code creator。我猜你可以有一个“密钥”的组合(processorid,mac和软件生成的密钥)。
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);
}发布于 2010-01-05 16:37:09
如果您需要唯一ID,则必须首先确定唯一ID的定义。如果你想/打算将它用于版权保护机制,那么使用一些简单的东西。这是因为,如果有人真的想使用你的软件,他会找到一种方法来破坏你的保护,只要有足够的时间和技能。在唯一硬件ID的情况下,只要考虑一下虚拟机,你就会发现它可以欺骗任何东西,这样别人就可以篡改你的软件。
你不能从一台PC中学到很多东西,并认为它在整个生命周期内都是独一无二的。(硬件更改很可能需要在某些时候重新生成ID。)如果你需要这样的东西,你应该考虑使用身份验证USB加密狗,你可以发送给你的客户。
如果您只需要一些不难获得的唯一标识符,您可以使用MAC地址(不可靠)、操作系统序列号或域名和用户名,但所有这些都很容易被伪造。然而,如果你的主要目标是锁定未经授权的人,你就不会卖任何东西,因为如果你的软件很难安装、注册或从一台电脑转移到另一台电脑,没有人会想要使用你的软件,尽管最后的考虑是每台机器许可的一部分。(这种情况可能会经常发生。)
作为第一步,让它变得简单:使用在你的目标群体中不容易欺骗的简单的东西。(例如,域名和用户名不容易被企业客户欺骗,因为他们的PC运行在实施策略的更大环境中,等等)只要忘记其他的,直到你有了它。
也许你可以把他们锁在外面,但这并不意味着他们会购买你的软件;他们只是不再使用你的软件。你必须考虑的是,有多少潜在客户不愿意或不愿意付费,因为你让使用你的程序变得如此复杂。
https://stackoverflow.com/questions/2004666
复制相似问题