【问题标题】:Running VB6 Exe project with C# Container application使用 C# 容器应用程序运行 VB6 Exe 项目
【发布时间】:2014-04-06 00:22:09
【问题描述】:

我有一个使用旧 VB6 开发的大型应用程序,它作为独立应用程序运行,但现在我已经在 C# 中为我们的产品实施了新的许可流程。

现在的问题是将那些旧的 VB6 行迁移到 .NET 几乎是不可能的,因为它们会产生大量错误并且调试需要数年时间。

控制旧项目许可的技巧可以通过一个容器应用程序来完成,该应用程序验证许可,然后使用一些安全的命令行参数执行旧的 vb6 exe。

我的问题是 - 还有其他方法吗?还有在 vb6 和 c# 中都可以使用的加密系统(目前有 128 位 AES)吗?

【问题讨论】:

  • 没有绝对安全的方式让 VB6 exe 知道它已被容器启动。用户只需将调试器附加到 VB6 exe 并查看命令行参数。 Windows 大师 Ray Chen writes about this here。尝试在 C# 中创建许可 DLL 并按照以下答案中的建议从 VB6 调用它。
  • 我试图创建 COM 互操作注册 DLL,但是我的编码有注册表读写和编译器给出了关于注册表 IO 类的访问被拒绝的错误,不知道为什么!

标签: c# .net vb6


【解决方案1】:

您需要的是所谓的 COM 互操作。基本上可以在 .net 中创建程序集,然后像注册 ActiveX dll 一样注册它(虽然方法有点不同),然后从 VB6 调用。

This answer 有一个合理的运行,或者在MSDN here 中有一个部分

【讨论】:

  • +1 换句话说,创建一个包含许可代码的 C# DLL,并通过 COM 互操作从 VB6 调用它。
【解决方案2】:

您可以将 C# 许可代码设置为 COM 可见的 dll。 这是通过在 AssemblyInfo.cs 文件中将 ComVisible 属性更改为 true 来完成的。

使用 RegAsm.exe 注册您的 .dll 后,您将能够从 VB6 调用您的 C# 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多