我有兴趣找出在C#中开发许可模型的任何标准或资源吗?

有帮助吗?

解决方案

在C#中,您可以使用 许可课 由Microsoft提供。可以通过链接获得样本。

基本上,您创建了一个从LICENCARPROVIDER继承并键入的类

[LicenseProvider(typeof(MyControlLicenseProvider))]

作为您希望获得许可的班级的属性。在您的实施中(MyControlLicenseProvider)您可以编码适当的方法以验证您的需求,然后进行代码调用

License license = LicenseManager.Validate(typeof(MyControl), this);

如果没有许可,则您的申请/控制已获得许可。

正如Graystar爵士所说,没有任何系统是万无一失的,并且具有所需技能的人可以在您的验证中设计自己。不要花太多时间来实施岩石硬系统,但也不要容易绕过。 :-)

使用诸如SHA或MD Hash功能之一的哈希人并喂给它们之一,可以使用一些关键数据来创建简单的验证检查。您的验证方法可以在

public override License GetLicense(LicenseContext context,
                                   Type type,
                                   object instance,
                                   bool allowExceptions)
    if (context.UsageMode == LicenseUsageMode.Designtime) {
        // Creating a special DesigntimeLicense will able you to design your
        // control without breaking Visual Studio in the process
        return new DesigntimeLicense();
    }
    byte[] existingSerialKey = getExistingSerial();
    // Algorithm can be SHA1CryptoServiceProvider for instance
    byte[] data = HashAlgorithm.Create().ComputeHash(
        username,
        dateRequested,
        validUntilDate,
        // any other data you would like to validate
    );
    // todo: also check if licensing period is over here. ;-)
    for (int l = 0; l < existingSerialKey.Length; ++l) {
        if (existingSerialKey[i] != data[i]) {
            if (allowExceptions){
                throw new LicenseException(type, instance, "License is invalid");
            }
            return null;
        }
    }
    // RuntimeLicense can be anything inheriting from License
    return new RuntimeLicense();
}

此方法返回自定义 执照, ,例如,一个关于许可的属性,例如 约会时间 在许可用完的时间。设置此功能不应花费很长时间,它可以与Winforms和ASP.NET站点一起使用,并且会阻止(不保证暗示)打破许可的简单尝试。

其他提示

我从来没有遇到过这样的标准。我个人要做的是创建一个记录或类似的内容,这些记录持有所有信息,以便在输入产品密钥之前以及在审判之前多久或任何有效期(这可能很棘手) t希望与系统日期进行比较,因为用户可以更改此日期)。然后,您想对此记录进行加密(也许是通过盐和哈希)进行加密,以便只有在输入特定产品密钥时才能解锁这些功能。您可能还需要随机生成上述密钥,尽管我会以特定的格式这样做,以便用户在给出产品密钥时始终识别它们,并且不要将其与发票号码或其他任何内容混淆。

记住,没有系统是傻瓜的,某人在操作系统上的某人会以某种方式找到一种方法。这可能是我永远不会遇到任何标准的原因,因为没有什么方法是完全安全的。您只需要尽力而为。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top