【问题标题】:Getting VB6 to reveal which component doesn't have a design time license installed让 VB6 显示哪个组件没有安装设计时许可证
【发布时间】:2010-01-27 04:34:57
【问题描述】:

我继承了一个我正在尝试“制作”的 VB6 项目。

在“制作 EXE”步骤中构建失败并出现许可错误:

License information for this component not found. 
You do not have an appropriate license to use this functionality 
in the design environment.

如何确定哪个组件缺少许可证?

该项目有大约 15 个参考文献;商业和微软的混合体。我已经为所有明显的参考安装了开发版本/许可证 - 并检查了我可以成功编译他们的示例应用程序。

剩下的 13 个奇数参考文献中;如何获得有关哪个组件引发许可错误的更多信息?

任何关于如何获得更详细的错误消息的提示/技术将不胜感激!

【问题讨论】:

    标签: vb6 licensing dll


    【解决方案1】:

    值得尝试两个 Microsoft 修复程序 - onetwo - 针对此错误,以防您遇到已知问题之一。

    如果这不起作用,请为 VB6 IDE 中的每个表单打开表单设计器。在显示表单时注意错误消息框。当显示此错误时,IDE 会写入一个日志文件 formname.log,其中提供有关哪个控件导致问题的更多信息。

    【讨论】:

    • web.archive.org 上没有链接。但是关于表单的第二部分是一个非常有用的提示。
    • 感谢@UuDdLrLrSs 指出损坏的链接!讨厌你微软和你对旧知识库文章的痴迷!但是感谢 Jeff Parsons 将它们放在 GitHub 上!...我将链接编辑为答案...这些旧链接的一部分。
    • 很好的解决方案!我希望 Jeff 的副本在搜索 KB #s 时能更频繁地出现。
    • 提示:如果您知道数字,Microsoft 和“KB”对于在 Google 上查找 KB 文章很有用,并且该数字是那些旧链接的一部分
    • 我以为我已经尝试过了...我会确保下次我需要缺少的 MSFT 文章时(遗憾的是,经常如此)。谢谢
    【解决方案2】:
    1. 使用所有相同的引用创建一个新的空应用程序
    2. 确认您仍然遇到同样的问题
    3. 删除后半部分引用
    4. 如果您仍然有同样的问题,那么问题出在剩余的引用上。转到3
    5. 如果不是,那么问题出在您删除的引用上。把它们放回去。删除你放回去的一半。转到 2。

    基本上,只是一个二分查找,除了它真的是“二分删除”。

    【讨论】:

    • 我没有 VB6 或任何相关的经验,但这是一个很棒的答案!
    • @blwy10:谢谢,这是一个“老狗”把戏。我们过去别无选择,只能这样调试。
    • 我尝试了“创建具有相同引用的空解决方案”技术。令人恼火的是,它编译时没有错误;导致我怀疑在调用许可证之前我必须实际使用参考中的组件。我的问题是我不知道哪些组件来自哪些引用...
    • @David Laing:未经许可的组件也可能在表单上。表单控件由使用它们的各个表单引用,并且不会显示在项目引用下。因此,您可能还想打开项目中的每个表单。如果表单上有未经许可的控件,如果我没记错的话,当您第一次在 IDE 中打开该表单时它会出错。
    • 抱歉,我的意思是要提到表单——您至少需要创建具有相同控件的虚拟表单。希望您在打开有问题的单个表单时会看到错误 - 您之前没有尝试过吗?
    【解决方案3】:

    所有答案的所有链接都已损坏...而且,我们中的一些人仍在尝试维护或转换旧的 VB6 应用程序(或两者兼而有之)。

    Microsoft 的 Mark Mark Russinovich 的 Process Monitor 是一个有点有用的工具(它直接来自 Microsoft.com,并且已经存在多年)。它允许您监视计算机系统范围内使用的所有资源,并允许您将其过滤到单个资源、进程等。

    有用的一点是启动程序,然后单击工具栏中的“过滤器”按钮(Ctrl-L)。从那里,您需要添加规则。选择Pathbegins with,这应该是值“HKCR\Licenses”。那是在HKEY_CLASSES_ROOT 部分,Active-X 组件许可信息所在的位置。这些应设置为Include

    单击确定,然后单击工具栏上的清除 (Ctrl-X) 以清除所有当前事件以重置状态。应该已经填充了与该规则匹配的事件。

    然后,调用您的构建。为了减少混乱,我使用了以下命令:

    "C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe" /make <project file> /outdir <exe dest dir>

    编译运行后,构建应该会失败并显示相同的消息,但只需打开进程监视器,您就可以看到最后一个尝试读取并失败的键。未找到的 UUID 是许可证应驻留的 UUID。

    从那里,您可以:

    1. 如果您的许可证允许,请从工作 PC 复制该值并将其安装到故障 PC。
    2. 谷歌那个ID,看看有没有说明如何获取正确的 许可证(例如从安装介质中的 .REG 文件之一安装它)
    3. 以其他方式获取并安装许可证

    虽然它没有准确地告诉您哪个组件对应于该 UUID,但它至少可以让您获得失败的特定 UUID,这比任何其他当前答案在其当前状态下所能做的更进一步。

    【讨论】:

    • 谢谢伙计!由于缺乏资源,我几乎放弃了,但这篇文章是正确的。
    【解决方案4】:

    试试这个 http://support.microsoft.com/kb/194751/EN-US 它将修复 VB6.0 Design Time License

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 2019-08-05
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多