我正在使用Inno设置密钥生成器(IKG)。我成功调用了ValidateSerialNumber
Valid := ValidateSerialNumber(ExpPath,RegName,'','','','',PrivKey,RegKey);
只要我为PrivKey和RegKey传递空字符串,该函数就会按预期返回false。只要我将值传递给PrivKey或RegKey,我就会收到错误消息:
Access violation at address XXXXXXX in module ISID.dll. Read of Address XXXXXX.
ExpPath或RegName的非空值不具有此效果。
宣布该职能:
function ValidateSerialNumber(InnoKeyFile, User, Orgn, ProdCode, HDD, MAC, PrivateKey,
Serial: String): Boolean;
external 'ValidateSerialNumber@files:ISID.dll stdcall';
我做错了什么?
答案 0 :(得分:1)
使用很可能是使用Unicode InnoSetup,并且该库使用ANSI版本计数。我从2004年some manual
开始为该库找到了InnoSetup wasn't Unicode
,所以尝试使用这个ANSI导入:
function ValidateSerialNumber(InnoKeyFile, User, Orgn, ProdCode, HDD, MAC, PrivateKey,
Serial: AnsiString): Boolean;
external 'ValidateSerialNumber@files:ISID.dll stdcall';