许可证的c#远程服务器唯一标识符
本文关键字:服务器 唯一 标识符 许可证 | 更新日期: 2023-09-27 17:55:01
我正在为我们的程序编写一个基本的许可类。我想把这个许可证绑定到服务器上,这样他们就不能移动许可证并期望它工作。
程序从服务器上的共享驱动器在每个工作站上本地运行。我们的大多数客户运行在对等网络上,因为他们是较小的公司,只有几台计算机。
我想获得服务器的唯一标识符,这样当工作站启动应用程序时,它将验证许可证是否针对正确的服务器运行。
我几乎已经完成了这个类,除了我不知道如何为服务器获得一个一致的唯一标识符。
而且,我是用c# .net写的。
有什么建议吗?
谢谢!
听起来你想要电脑的安全标识符(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