2012-10-17 35 views
4

我正在使用Inno安裝密鑰生成器(IKG)。我成功調用ValidateSerialNumber帶IKG的Inno安裝程序:模塊ISID.dll中的地址XXXXXXX處出現訪問衝突

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或寄存器名非空值不會有這種效果。

該函數聲明:

function ValidateSerialNumber(InnoKeyFile, User, Orgn, ProdCode, HDD, MAC, PrivateKey, 
Serial: String): Boolean; 
external '[email protected]:ISID.dll stdcall'; 

我在做什麼錯?

+0

您正在使用什麼版本的InnoSetup的,Unicode或ANSI版本? – TLama

回答

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 '[email protected]:ISID.dll stdcall'; 
+0

完美!非常感謝你! – soerenD

+0

不客氣!我很高興它有幫助,但請在你的問題中包括你使用Unicode版本的InnoSetup。我的回答只是一個幸運的工作:-)無論如何歡迎來到StackOverflow! – TLama

相關問題