【问题标题】:VB6: Capicom Crashes on WinXP [duplicate]VB6:Capicom 在 WinXP 上崩溃 [重复]
【发布时间】:2008-12-01 19:26:31
【问题描述】:

关于解决这个崩溃有什么建议吗?

以下代码在记录 <part>14 和记录 <part>15 之间间歇性崩溃。 Plaintext 是一个路径字符串(在这种情况下它是"C:\Documents and Settings\Brian\Desktop\Joy\",尽管显然缺乏这种快乐。我有一种下沉的感觉,这是某种邪恶记忆问题的症状。我尝试了两个 Capicom 2.1.0.1和 2.1.0.2, 两者都崩溃. 后者给出标准的错误报告消息, 前者无声无息地死掉(即程序自行关闭). 我在别人的 XP 机器上测试了同样的问题, 虽然它工作正常远景。

Const curMthd = "EncryptStringWrap"
Dim Message As CAPICOM.EncryptedData
Set Message = New CAPICOM.EncryptedData
Dim oUtil As CAPICOM.Utilities
Set oUtil = New CAPICOM.Utilities
E.ErrorLog "<PART>14"
Message.Content = plaintext
E.ErrorLog "<PART>15"

编辑:导致问题的不是数据。我一直在手动传递数据来测试这个;它工作正常。令人讨厌的是,当我将测试代码放入初始化时,该错误就消失了。邪恶的 heisenbug :( 。可能是内存问题 :(

编辑 2:重写和诸如此类的 here,并关闭。与这个本身不是同一个问题,但这个问题是基于对问题的严重误解。

【问题讨论】:

    标签: vb6 encryption crash capicom


    【解决方案1】:

    斜杠可能会导致 CAPICOM 无法正确处理字符串。通过将代码放入循环中,您可以在其中输入不同的字符串,您可以找出问题顺序。

    鉴于 CAPICOM 是 cryptoAPI 的包装器,这可以为您提供另一条路径,您可以在其中运行测试项目,使用相同的序列和相同类型的调用直接访问 Crypto API。从网上阅读是一个薄包装。

    MSDN 有一些示例代码here 还有更多可用的。

    我以这种方式处理了各种“包装器” Com DLL 的许多问题。找出导致问题的数据。使用相同的数据直接使用 Win API 编写测试项目。然后评价。

    结果通常是我实现自己的包装器。或者发现我少了一个步骤或者配置错误。

    请注意,这也适用于 .NET 中的包装程序集,另外还有一个好处是能够使用反射器查看包装器在做什么。

    【讨论】:

    • 实际上,该代码来自包装器。它曾经工作过:/
    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2011-07-25
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多