许可证的c#远程服务器唯一标识符

本文关键字:服务器 唯一 标识符 许可证 | 更新日期: 2023-09-27 17:55:01

我正在为我们的程序编写一个基本的许可类。我想把这个许可证绑定到服务器上,这样他们就不能移动许可证并期望它工作。

程序从服务器上的共享驱动器在每个工作站上本地运行。我们的大多数客户运行在对等网络上,因为他们是较小的公司,只有几台计算机。

我想获得服务器的唯一标识符,这样当工作站启动应用程序时,它将验证许可证是否针对正确的服务器运行。

我几乎已经完成了这个类,除了我不知道如何为服务器获得一个一致的唯一标识符。

而且,我是用c# .net写的。

有什么建议吗?

谢谢!

许可证的c#远程服务器唯一标识符

听起来你想要电脑的安全标识符(SID)。

string fqdn = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).HostName;
int firstDot = fqdn.IndexOf('.');
string host = fqdn.Substring(0, firstDot);
string domain = fqdn.Substring(firstDot + 1);
NTAccount account = new NTAccount(domain, host + "$");
SecurityIdentifier sid =
    (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));
// we're done, show the results:
Console.WriteLine(account.Value);
Console.WriteLine(sid.Value);
从这里复制标识符的代码。不过,测试。它的工作原理。)

参考下面的讨论,对用户最"温和"的方式是按主机名授权。dotnetchart就是这么做的(或者几年前我购买他们的软件时就是这么做的)。基于硬件或计算机的SID容易发生变化,并且在硬件更改或重新安装操作系统时需要重新授权/激活。上面代码的第一行返回完全限定域,您可以将其用于此目的。

获取CPU、系统硬盘和主板的序列号,然后对其进行散列。当然,您可以混淆您所使用的硬件系列/型号信息。

解释如何获取信息的codeproject文章:http://www.codeproject.com/KB/system/GetHardwareInformation.aspx