【问题标题】:HASP HL working demo needed for C#C# 所需的 HASP HL 工作演示
【发布时间】:2012-05-26 06:41:00
【问题描述】:

好的。好吧,我知道这个问题很有可能在前 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 和它的内存中的设置。

提前致谢,

【问题讨论】:

    标签: c# .net exception usb hasp


    【解决方案1】:

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

    【讨论】:

    • Daniel,感谢您的回复,但我仍然无法正常工作。每当我尝试将 MSVCR71.dll 添加到我的参考列表中时,编译器都会引发消息“由于对象的当前状态,操作无效。”我不确定为什么。我能够添加引用的唯一 dll 文件是 hasp_net_windows.dll。
    • 那是非托管 dll,因此不能作为参考添加。只需将其放入可执行文件夹即可。此外,使用depends.exe 查找您可能需要的任何缺失的依赖DLL。
    • Daniel,我只能找到 hasp_net_windows.dll 和 MSVCR71.dll,而不是你说的 hasp_windows_NNNNN.dll。我需要从 Internet 下载丢失的 DLL 文件吗?我找到的那些文件在可执行文件夹中。不过,我得到了同样的例外。我运行了 Depends.exe,它一直抱怨 IEShims.dll 丢失,即使它在我的系统中找到。
    • ieshims.dll 并不重要。看hasp的那个工具,可能是给你生成那个dll的,我记不得了。
    • Daniel,我终于能够成功读取我的 HASP 加密狗了。但是, hasp.Getfile 函数对我不起作用。所以,我使用了 hasp.getsessioninfo 确实有效。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多