自定义库模块增加自定义许可操作详细方法
自定义库模块增加自定义许可操作详细方法
用到的工具:
后面程序用到的所有代码均是该工具生成的秘密!!!!
【切记切记!!! 一定要记住密码,不然如果你想将库的许可认证移除,则无法无法实现】
关键字认识:
1、setRequiredLicense
setRequiredLicense【设置库记载时检查秘钥,如果秘钥错误或版本错误或时间过期均无法加载秘钥】
案例演示:
--策略功能说明:
--配置库秘钥检查【如果秘钥不对则直接加载失败】
-------------------------------------------------------------------------------------Called By :--Calls :--Author:Yechaocheng--CreateDate : 2025/05/17 10:20:35.3210
-------------------------------------------------------------------------------------History:--2025/05/17 KM SimTalk 2.0
-----------------------------------------------------------------------------------
-->USER CODE BEGIN
-----------------------------------------------------------------------------------
RootFolder.setRequiredLicense("AHRF_KEYGEN","1.0.0","18D77674-23E1-4329-B470-F58E8DC59B17","","安徽锐锋科技秘钥管理:提醒您请联系您的服务商获取许可证!请从(文件 > 首选项 > 许可证下单击查询主机 ID)获取HostID 并提供给服务商!")
-----------------------------------------------------------------------------------
-->USER CODE End
-----------------------------------------------------------------------------------
官方说明:
setRequiredLicense [SimTalk]
语法
.setRequiredLicense(Feature:string, Version:string, Password:string[, FreeInLicense:string, Comment:string, PreviousPasswordForUpdate:string])
描述
方法 setRequiredLicense 用于告知 指定的库文件夹请求用户定义的许可证。
加载包含此类库的仿真模型或对象时,Plant Simulation 会在 Windows 注册表中查找相应的用户定义许可证。如果未找到具有指定功能名称的有效许可证,Plant Simulation 无法分别加载仿真模型或对象。
仅当版本高于或等于请求的版本、许可证的主机 ID 与计算机的主机 ID 匹配、未超过许可证的有效日期以及已注册许可证的密码与所请求许可证的密码匹配时,注册的许可证才有效。
可使用用户定义许可证限制仿真模型和对象(包括库)的传递。
要限制仿真模型的传递,调用 basis.setRequiredLicense,然后保存模型。
要限制库的传递,针对库文件夹调用 setRequiredLicense,然后保存库。
更新需要用户定义库的库时,新版本的库还必须请求此用户定义许可证(即,功能相同),请求的版本号必须至少与旧库一样大,并且许可证必须使用相同的密码进行保护。
如果要为较新版本的库指派其他密码,调用方法 setRequiredLicense,然后将空字符串 “” 传递给参数 Feature,将旧密码传递给参数 Password。这将取消注册用户定义的许可证。然后再次调用方法 setRequiredLicense,将许可证功能的名称传递到参数 Feature,将新密码传递到参数 Password,将旧密码传递到参数 PreviousPasswordForUpdate。库不仅可根据上述规则更新使用新密码的库版本,还可以更新使用旧密码的任何库版本,即使许可证功能的名称更改或新版本号低于旧库的版本号也是如此。
参数
数据类型为 string 的 Feature 参数用于指定许可证功能的名称。传递空字符串 “” 时,将移除现有许可证,前提是输入了正确的密码。
数据类型为 string 的 Version 参数用于指定许可证的版本号。注:已注册版本必须大于或等于请求的许可证。
例如,如果已注册功能的版本 10,可以请求版本 9.5.0,反之不行。
数据类型为 string 的 Password 参数用于指定密码。已注册许可证的密码必须与此密码一致,才会将已注册的许可证视为有效。
数据类型为 string 的可选参数 FreeInLicense 用于设置当 Plant Simulation 使用请求的许可证类型或值较低的许可证类型时,不请求用户定义的许可证。可以输入 “Application”、“Runtime”、“Simulation”、“” 或 “-”。
值的含义如下:
“-”:许可证永不免费,即使在查看器许可证中也如此。
“”:许可证仅在查看器许可证中免费。这是不输入参数时的默认设置。
“Simulation”:许可证在仿真和较低的查看器许可证中免费。
“Runtime”::许可证在运行时许可证和较低的许可证类型(即仿真和查看器)中免费。
“Application”:许可证在应用许可证和较低的许可证类型(即运行时、仿真和查看器)中免费。
“Educational”:许可证在教育许可证和较低的许可证类型(即运行时、仿真和查看器)中免费。
数据类型为 string 的可选参数 Comment 用于设置将附加到消息的文本,如果在加载对象或模型时不存在许可证,该文本会在消息窗口中显示。这仅在输入任何文本时适用。
数据类型为 string 的可选参数 PreviousPasswordForUpdate 用于指定更新库的先前密码。
可以使用 SimTalk 函数 createLicenseFile 生成用户定义许可证。
示例
.Standard.MyLibrary.setRequiredLicense(“MyFeature”, “9.5.7”, “MySecretPassword123”)
2、checkForLicense
checkForLicense【秘钥有效性检查】
案例演示:
--策略功能说明:
--本程序用于自定义程序进行秘钥检查,一般只需要初始化的时候调用一次即可
-------------------------------------------------------------------------------------Called By :--Calls :--Author:Yechaocheng--CreateDate : 2025/05/17 10:13:34.6020
-------------------------------------------------------------------------------------History:--2025/05/17 KM SimTalk 2.0
-----------------------------------------------------------------------------------
-->USER CODE BEGIN
-----------------------------------------------------------------------------------
param KeyName:string:="AHRF_KEYGEN",keyPwd:string:="18D77674-23E1-4329-B470-F58E8DC59B17"->boolean
var InPUTValue:string:=computeSHA1Hash(keyPwd)
var CheckValue:integer:=checkForLicense(KeyName, "1", InPUTValue)
if CheckValue=0return true//0:许可证功能已注册且有效。
end
var Err:string
switch CheckValue
case 1Err:="许可证功能未注册!"
case 2Err:="文件具有无效的注册表数据格式!"
case 3Err:="SHA-1 哈希错误!"
case 4Err:="主机 ID 错误!"
case 5Err:="功能的注册版本太旧!"
case 6Err:="许可证已过期!"
case 7Err:="此功能不允许与 Plant Simulation 许可证类型 (Professional / Standard / Runtime /...) 一同使用!"
elseErr:="未知错误!"
end
messageBox(to_str("|安琥锐锋科技提醒您:|",Err),0,1)
return false
--closemodel //强制关闭当前模型
-----------------------------------------------------------------------------------
-->USER CODE End
-----------------------------------------------------------------------------------
完整功能代码代码如下:
--策略功能说明:-------------------------------------------------------------------------------------Called By :--Calls :--Author:Yechaocheng--CreateDate : 2025/05/17 10:13:34.6020
-------------------------------------------------------------------------------------History:--2025/05/17 KM SimTalk 2.0
-----------------------------------------------------------------------------------
-->USER CODE BEGIN
-----------------------------------------------------------------------------------
->boolean
//哈希转换
var InPUTValue:string:=computeSHA1Hash("585E4D1C-9E64-415F-A83B-E4E0FBABBB6C")
//秘钥验证
var CheckValue:integer:=checkForLicense("MyFeature", "1", InPUTValue)
if CheckValue=0return true//0:许可证功能已注册且有效。
end
var Err:string
switch CheckValue
case 1Err:="许可证功能未注册!"
case 2Err:="文件具有无效的注册表数据格式!"
case 3Err:="SHA-1 哈希错误!"
case 4Err:="主机 ID 错误!"
case 5Err:="功能的注册版本太旧!"
case 6Err:="许可证已过期!"
case 7Err:="此功能不允许与 Plant Simulation 许可证类型 (Professional / Standard / Runtime /...) 一同使用!"
elseErr:="未知错误!"
end
messageBox(to_str("|安琥锐锋科技提醒您:|",Err),0,1)
return false
--closemodel //强制关闭当前模型
-----------------------------------------------------------------------------------
-->USER CODE End
-----------------------------------------------------------------------------------
官方说明:
checkForLicense [SimTalk]
语法
checkForLicense(Feature:string, Version:string, PasswordHash:string) → integer
描述
checkForLicense 函数检查用户定义的许可证是否可用。
参数
数据类型为 string 的 Feature 参数用于指定许可证功能的名称。
字符串数据类型的版本参数指定所请求许可证的版本号。
字符串数据类型的密码哈希参数指定许可证密码的 SHA-1 哈希。
返回值的数据类型
返回值的数据类型为整数。
各个值的含义如下:
0:许可证功能已注册且有效。
1:许可证功能未注册。
2:文件具有无效的注册表数据格式。
3:SHA-1 哈希错误。
4:主机 ID 错误。
5:功能的注册版本太旧。
6:许可证已过期。
7:此功能不允许与 Plant Simulation 许可证类型 (Professional / Standard / Runtime /…) 一同使用。
示例
if checkForLicense(“MyFeature”, “1”, “686483805ac47ca14e03514f7481a7973b401762”) = 0
// The license is available, you can proceed …
else
closeModel
messageBox(“The license ‘MyFeature’ is unavailable. The model was closed.\n”, 1, 1)
end