4

Inno Setup Key Generator(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 に答える