4

我正在使用 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';

我究竟做错了什么?

4

1 回答 1

1

使用最有可能使用 Unicode InnoSetup 并且该库与 ANSI 版本一起计数。我some manual从 2004 年就找到了那个库,那时InnoSetup wasn't Unicode还没有,所以尝试使用这个 ANSI 导入:

function ValidateSerialNumber(InnoKeyFile, User, Orgn, ProdCode, HDD, MAC, PrivateKey,
  Serial: AnsiString): Boolean;
  external 'ValidateSerialNumber@files:ISID.dll stdcall';
于 2012-10-17T15:09:42.417 回答