使用exec返回c#exe的值

时间:2011-12-13 09:49:19

标签: security licensing exec inno-setup pascal

我使用inno设置时遇到问题。我正在使用inno安装更新,并且使用update.exe,用户将获得带有licencenumber的txtfile。在他的单位上,这个许可证号可由dll函数读取。

在安装过程之前,我必须比较这些数字。只有当这些数字相同时,用户才会尝试使用正确的许可证在正确的机器上安装更新。

如果我将这个检查放入一个单独的exe中,那么通过改变一个只是什么都不做的exe(没有错误代码)就可以很容易地破解它。所以我想将检查拆分为分离的exe(我检查其他一些东西,如安装的版本号等)和update.exe

在update exe中,我想读取updatepackage中的txtfile - 这很容易。 在check.exe中我想调用内部dll并获取机器的licencenumber。我必须将此数字作为int返回。 C#允许我这样做。

但我怎么能在innosetup中得到这个号码?

我试图为此获取错误代码(0 =错误 - 不正确的版本等,XXXXXXXXX = licencenumber of machine)。但错误代码只是2个字符。我只得到2个字符......

将数字保存在另一个文件中将是一个解决方案,因为用户可以通过这种方式破解它...是否有可能将数字转换为inno而不给用户提供机会?

1 个答案:

答案 0 :(得分:0)

如果将代码移动到DLL(COM或普通的stdcall DLL)中,它可以被Inno使用,并在它们之间传递额外的数据,包括完整的字符串等。