2014-03-04 40 views
1

我有一个使用旧VB6开发的应用程序,该应用程序作为独立应用程序运行,但现在我已在C#中为我们的产品实施了新许可过程。使用C#容器应用程序运行VB6 Exe项目

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

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

我的问题是 - 有没有其他方式做到这一点?还有什么加密系统可以在vb6和c#中使用(目前有128位AES)?

+0

就可以了部分对于VB6的EXE知道它已经由容器推出没有绝对安全的方式。用户可以将调试器附加到VB6 exe并查看命令行参数。 Windows大师Ray Chen [在此处写道](http://blogs.msdn.com/b/oldnewthing/archive/2014/02/21/10501953.aspx)。尝试在C#中创建一个授权DLL,并按照以下答案中的建议从VB6中调用该DLL。 – MarkJ

+0

我正在尝试创建COM Interop注册DLL,但是我的代码有注册表读写和编译器给出关于拒绝访问注册表IO类的错误,不知道为什么! – seopower

回答

2

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

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

3

你需要什么叫做COM Interop。基本上可以在.NET中创建程序集,然后像注册ActiveX DLL一样注册它(虽然方法有点不同),并从VB6调用。

This answer有合理的运行下来,或者出现在MSDN here

+1

+1换句话说,创建一个包含许可代码的C#DLL,并通过COM interop从VB6调用它。 – MarkJ