通过.NET库 “IntelliLock.Licensing.dll”,你能够在运行时确定你的锁定软件的当前许可状态。你只需要在你的项目中引用这个库并访问相应的方法和属性。
通过.NET库 “IntelliLock.Licensing.dll”,你能够在运行时确定你的锁定软件的当前许可状态。你只需要在你的项目中引用这个库并访问相应的方法和属性。所有的方法和属性都应该是自我解释的。你不需要选择一个许可证文件。如果一个有效的许可证文件是可用的,它将被自动用来更新许可证状态。
请注意,”IntelliLock.Licensing.dll “的方法和属性只有在你保护你的软件后才会返回正确的值。在保护之后,”IntelliLock.Licensing.dll “库就不再需要了。
首先要引入程序集 using IntelliLock.Licensing;
1. 检查授权是否有效
/*** Check if a valid license file is available. ***/ public bool IsValidLicenseAvailable() { return (EvaluationMonitor.CurrentLicense.LicenseStatus == IntelliLock.Licensing.LicenseStatus.Licensed); }
2. 读取授权文件中的信息
/*** Read additonal license information from a license file ***/ public void ReadAdditonalLicenseInformation() { /* Check first if a valid license file is found */ if (EvaluationMonitor.CurrentLicense.LicenseStatus == IntelliLock.Licensing.LicenseStatus.Licensed) { /* Read additional license information */ for (int i = 0; i < EvaluationMonitor.CurrentLicense.LicenseInformation.Count; i++) { string key = EvaluationMonitor.CurrentLicense.LicenseInformation.GetKey(i).ToString(); string value = EvaluationMonitor.CurrentLicense.LicenseInformation.GetByIndex(i).ToString(); } } }
3. 检查过期锁状态
/*** Check the license status of the Expiration Days Lock ***/ public void CheckExpirationDaysLock() { bool lock_enabled = EvaluationMonitor.CurrentLicense.ExpirationDays_Enabled; int days = EvaluationMonitor.CurrentLicense.ExpirationDays; int days_current = EvaluationMonitor.CurrentLicense.ExpirationDays_Current; }
4. 依然是检查过期锁状态
/*** Check the license status of the Expiration Date Lock ***/ public void CheckExpirationDateLock() { bool lock_enabled = EvaluationMonitor.CurrentLicense.ExpirationDate_Enabled; System.DateTime expiration_date = EvaluationMonitor.CurrentLicense.ExpirationDate; }
5. 检查执行锁状态
/*** Check the license status of the Executions Lock ***/ public void CheckExecutionsLock() { bool lock_enabled = EvaluationMonitor.CurrentLicense.Executions_Enabled; int max_executions = EvaluationMonitor.CurrentLicense.Executions; int current_executions = EvaluationMonitor.CurrentLicense.Executions_Current; }
6. 检查实例锁状态
/*** Check the license status of the Instances Lock ***/ public void CheckNumberOfInstancesLock() { bool lock_enabled = EvaluationMonitor.CurrentLicense.Instances_Enabled; int max_instances = EvaluationMonitor.CurrentLicense.Instances; }
7. 检查硬件锁状态
/*** Check the license status of Hardware Lock ***/ public void CheckHardwareLock() { bool lock_enabled = EvaluationMonitor.CurrentLicense.HardwareLock_Enabled; if (lock_enabled) { /* Get Hardware ID stored in the license file */ string lic_hardware_id = EvaluationMonitor.CurrentLicense.HardwareID; } }
8. 获得硬件ID
/*** Get Hardware ID of the current machine ***/ public string GetHardwareID() { return HardwareID.GetHardwareID(true, true, false, true, true, false); }
9. 对比硬件锁
/*** Compare current Hardware ID with Hardware ID stored in License File ***/ public bool CompareHardwareID() { if (HardwareID.GetHardwareID(true, true, false, true, true, false) == EvaluationMonitor.CurrentLicense.HardwareID) return true; else return false; }
10. 作废授权
/*** Invalidate the license. Please note, your protected software does not accept a license file anymore! ***/ public void InvalidateLicense() { string confirmation_code = License_DeActivator.DeactivateLicense(); }
11. 重新激活授权
/*** Reactivate an invalidated license. ***/ public bool ReactivateLicense(string reactivation_code) { return License_DeActivator.ReactivateLicense(reactivation_code); }
12. 使用文件名手动加载一个许可证
/*** Load the license. ***/ public void LoadLicense(string filename) { EvaluationMonitor.LoadLicense(filename); }
13. 使用byte[]加载许可证
/*** Load the license. ***/ public void LoadLicense(byte[] license) { EvaluationMonitor.LoadLicense(license); }
14. 获取加载的许可证(如果有的话),作为byte[] 。
/*** Get the license. ***/ public byte[] GetLicense() { return EvaluationMonitor.GetCurrentLicenseAsByteArray(); }
15. 异步检查许可证状态以防止启动延迟
/*** Check the license. ***/ class Program { // To automatically check the license asynchronously the option "Asynchronous License Check" must be enabled in IntelliLock static void Main(string[] args) { IntelliLock.Licensing.EvaluationMonitor.LicenseCheckFinished += () => { Console.WriteLine(IntelliLock.Licensing.HardwareID.GetHardwareID(false, true, false, true, true, false)); Console.WriteLine(IntelliLock.Licensing.CurrentLicense.LicenseStatus.ToString()); }; Console.ReadLine(); } }
或者这样写也可以
/*** Check the license. ***/ class Program { // To automatically check the license asynchronously the option "Asynchronous License Check" must be enabled in IntelliLock static void Main(string[] args) { string licenseFile = @"C:license.license"; // To ensure SDK method calls doesn't block/delay the control flow the SDK method LoadLicense(...) should be run in asynchronous context (new Action()..) as well new Action(() => { IntelliLock.Licensing.EvaluationMonitor.LoadLicense(File.ReadAllBytes(licenseFile)); IntelliLock.Licensing.EvaluationMonitor.LicenseCheckFinished += () => { Console.WriteLine(IntelliLock.Licensing.HardwareID.GetHardwareID(false, true, false, true, true, false)); Console.WriteLine(IntelliLock.Licensing.CurrentLicense.LicenseStatus.ToString()); }; }).BeginInvoke(null, null); Console.WriteLine("Due to asynchronous control flow this line is displayed first"); Console.ReadLine(); }
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!