【问题标题】:Portable.Licensing how to tie a license to a PCPortable.Licensing 如何将许可证绑定到 PC
【发布时间】:2015-08-15 17:11:39
【问题描述】:

我们有一个 C# 应用程序,需要保护它免受非法复制。所以我们决定使用Portable.Licensing 库来保护我们的系统。

如何将许可证绑定到Portable.Licensing 中的硬件 ID,以便只有特定 PC 可以使用许可证?

【问题讨论】:

    标签: c# licensing


    【解决方案1】:

    您可以针对 PC 的名称、硬件信息等生成唯一的哈希,并在创建许可证期间将此哈希添加为 Additional Attribute

    许可证创建示例:

    var license = License.New()  
        .WithUniqueIdentifier(Guid.NewGuid())  
        .As(LicenseType.Standard)    
        .WithMaximumUtilization(1)  
        .WithAdditionalAttributes(new Dictionary<string, string>  
                                  {  
                                      {"HardwareId", "........"}  
                                  })  
        .LicensedTo("John Doe", "john.doe@yourmail.here")  
        .CreateAndSignWithPrivateKey(privateKey, passPhrase);
    

    要验证属性,您可以实现自己的验证扩展方法或只使用现有的AssertThat()。示例:[1]

    唯一硬件 ID 的生成超出了可移植许可的范围。

    [1]https://github.com/dnauck/Portable.Licensing/blob/develop/src/Portable.Licensing/Validation/LicenseValidationExtensions.cs#L100

    【讨论】:

    • 如何验证?
    【解决方案2】:

    你可以调用AsserThat方法:

    license.Validate()
    .AssertThat(lic => lic.ProductFeatures.Get("HardwareId") == "133456", new GeneralValidationFailure() { Message="Invalid Hardware.", HowToResolve="Contact administrator"});
    

    【讨论】:

    • @Shuaib 您可以在验证许可证时使用 WithMaximumUtilization 值编写自己的逻辑。例如:限制最大用户数
    • 虽然这段代码 sn-p 本身可以工作,但我尝试将其 附加 到其他流利的 api,例如在 github 中 readme:var validationFailures = license.Validate()...(I want put your code here),但我总是编译失败。你能举个例子吗?
    • 我终于通过在不同的验证中添加Add() 方法解决了错误。但是没有关于它的详细文件。
    【解决方案3】:

    使用 ProtectedData.Protect 和 DataProtectionScope.LocalMachine 来加密许可证文件中的某些键值对。 那么,只有在同一台机器上可以成功解密该值时,该许可证才有效。

    ProtectedData.UnProtect 只会在它被加密的同一台机器上解密。 不过,这将需要在注册过程中进行桌面/客户端服务器交互才能实现。

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      相关资源
      最近更新 更多