c#-从字节[]加载本机dll
我正在从事一个项目,该项目涉及从.net程序中的网页接收一个字节[],然后将该字节[]作为dll加载。但是,dll不是.net程序集,它是本机程序集。我无法使用loadlibrary,因为我必须写入磁盘,并且我希望将本机dll保留在内存中。我不能使用C++ + CLI,因为这是在单声道中完成的,MNO不支持C++/CLI。是否有一个库或项目允许我从c#中的字节[]加载本机dll?我已经看到了这个教程:但是,这是C++。只使用Stult.Load(如果是.NET程序集)。c#-从字节[]加载本机dll,c#,c++,.net,dll,C#,C++,.net,Dll,我正在从事一个项目,该项目涉及从.net程序中的网页接收一个字节[],然后将该字节[]作为dll加载。但是,dll不是.net程序集,它是本机程序集。我无法使用loadlibrary,因为我必须写入磁盘,并且我希望将本机dll保留在内存中。我不能使用C++ + CLI,因为这是在单声道中完成的,MNO不支持C++/CLI。是否有一个库或项目允许我从c#中的字节[]加载本机dll?我已经看到了这个教程:但是,这是C++。只使用Stult.Load(如果是.NET程序集)。 否则,请将PInvoke
否则,请将PInvoke与非托管DLL一起使用。我将简要介绍该DLL的问题所在:
- 您正在从internet接收DLL。每一位管理者都会想,他是疯了,还是真的疯了。在上个世纪,我们在数据阵列上的远程代码执行和代码注入方面遇到了足够多的问题,不需要尝试就知道这将如何失败
- 托管.NET运行时设计中的任何东西都在那里,所以你不能做那样的事情。您可能必须转到未更改的代码。在那时,你也可以写在原生C++中。
- 它甚至可能会因为试图解决这个问题而被一些普通的病毒扫描启发法绊倒。因为这是访问我的操作系统的访问者不应该尝试去做的事情的短列表
如果这并没有阻止您:最好将其移动到某种帮助进程中,然后通过进程间通信传输数据/结果。当调用old、umanaged时,二元性匹配错误通常是一个问题。助手进程(总是在x32上运行以匹配DLL)可以帮助实现这一点。一旦你得到了一个帮助程序,它可以在类似于C++的地方编程,在那里这些类型的诡计更容易,你甚至可以举个例子。 < P>这会帮助你,或者引导你到某处。 这基本上是一个包装的项目,你已经发送,我会保持回购为任何人谁希望看看它。未在32位操作系统上测试,因此可能会产生开销
它基本上就是你想要的。需要本机dll的字节数组,并将其加载到当前进程中。“将PInvoke与非托管dll一起使用”无法提供足够的信息,甚至无法搜索答案,这肯定不是一个好的完整答案。这样做是有正当理由的。他要求的是答案而不是意见。您也可以在代码上签名,以确保dll未被操纵。如果你真的想验证,请锁定证书并让两者相互验证。你解决了这个问题吗?