5

好的。好吧,我知道这个问题很有可能在前 10 分钟内被关闭,但无论如何我都会问它,因为我已经花了将近一天半的时间试图找到解决方案。不过,我无法弄清楚这一点。尽管有演示,但在 Internet 上甚至在 HASP(safenet)网站上也没有太多关于此的信息。

我有一个 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 和它的内存中的设置。

提前致谢,

4

1 回答 1

3

可能是您没有 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 应用程序周围放置信封。

于 2012-05-25T22:31:49.723 回答