好的。好吧,我知道这个问题很可能在前10分钟内被解决,但是无论如何我都会问这个问题,因为我花了整整一天半的时间来寻找解决方案。不过,我无法弄清楚这一点。尽管Internet上有演示,但在Internet上甚至在HASP(安全网)网站上都没有多少相关信息。

我有一个HASP HL USB加密狗。我尝试转换他们的演示并对其进行测试运行,但是对于我一生来说,我什至无法登录。它不断引发 Aladdin.HASP.HaspStatus.HaspDotNetDllBroken 异​​常。

但是,如果我运行他们演示的C版本,则效果很好。

这是我的代码的Csharp版本:

Aladdin.HASP;
HASP myHasp = new HASP();
var thestatus = myHasp.Login(vender_code);
myHasp.Logout;

我想登录到USB HASP并在其内存中获取其HaspID和设置。

提前致谢,

最佳答案

可能是因为您没有HASP运行时的所有依赖关系。我正在打包应用程序:

hasp_windows_NNNNN.dll (NNNNN = your number)
hasp_net_windows.dll
MSVCR71.DLL (added manually)
msvc runtime 80

HASP需要一个运行时库,除非您将其放在DEPENDS.EXE实用程序中(您可能已将其安装在Visual Studio中),否则它不会告诉您哪个运行时库。

要登录(并读取一些字节):
            byte[] key = new byte[16];
            HaspFeature feature = HaspFeature.FromFeature(4);
            string vendorCode = "your vendor string, get it from your tools";
            Hasp hasp = new Hasp(feature);
            HaspStatus status = hasp.Login(vendorCode);
            if (HaspStatus.StatusOk != status)
            {
                //  no license to run
                return false;
            }
            else
            {
                //  read some memory here
                HaspFile mem = hasp.GetFile(HaspFileId.ReadOnly);
                mem.Read(key, 0, 16);
                status = hasp.Logout();
                if (HaspStatus.StatusOk != status)
                {
                    //handle error
                }
            }

希望能帮助到你。我的HASPed软件的工作原理很吸引人。顺便说一句,在没有任何组合设置的情况下,无法在.NET应用程序周围放置信封。

关于c# - C#所需的HASP HL工作演示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10760673/

10-12 22:38