.NET应用程序每台机器/每用户许可

时间:2010-04-27 23:54:18

标签: c# licensing wmi piracy serial-number

我即将为我的应用程序实现一个非常基本的许可功能。每台计算机(或每个操作系统)或每个用户可以授予序列号(对于Windows Server中的CAL:如果我的应用程序由一台计算机上的多个用户使用,或者一个用户使用多个用户)机)。

  1. 对于按操作系统许可,我使用Win32_OperatingSystem SerialNumber

  2. 对于每用户许可,我使用:

    WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
    if (currentIdentity != null)
    {
        SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid;
        Console.WriteLine(userSid);
    }
    
  3. 然后将获得的OS序列号或SID的散列存储在数据库中,与应用程序序列相关联;每次程序启动时,它都会查询服务器,发送OS SN / SID和应用程序序列的散列。

    这样做是对的,还是完全错误的?它会在每台Windows机器上运行吗? (例如,using motherboard serial is wrong

1 个答案:

答案 0 :(得分:3)

我认为您的方法没有任何问题,因为我已经看到在工作中使用了类似的方法 - 但是我们使用OS S / N和硬件ID的组合来进行机器许可。我们的应用程序没有每用户许可,因此我无法就此提出建议。

请注意,您不应该假设WMI返回的值采用任何特定格式( Win32_OperatingSystem 应该没问题,硬件ID并不总是正常)

我遇到过错误,其中接受硬件ID的代码采用特定格式,并且不考虑是否存在非字母数字字符(如逗号和空格)。