C#DLL可以被截去?

时间:2010-10-05 14:44:38

标签: c# .net pinvoke dllimport

问题:是否可以编写一个可以被编程的C#dll?

我想为WinAPI调用WritePrivateProfileString等编写替换库,以便读取和编写ini文件。

是否可以导出功能,例如'WritePrivateProfileString',在C#中实现,所以可以用DllImport对dll进行pinvoke吗?

我想用托管dll替换本机dll,因此当托管dll在bin目录中时,通过pinvoke调用(而不是本机dll)调用托管dll。

3 个答案:

答案 0 :(得分:7)

与普遍看法相反, 是可能的。 (请注意,您需要修改要从DLL导入的调用应用程序)
请参阅here

但是,在你的情况下,这不一定是个好主意 为什么不将extern声明更改为调用替换的普通方法?

答案 1 :(得分:1)

这不容易,但使用一些“黑客”可以done

但是COM可能是更好的选择,因为很容易从C#导出com对象并使用VB6中的com对象。然后将extern声明更改为调用你的普通方法是你的com对象。

答案 2 :(得分:0)

尝试使用Mono Cecil将第三方程序的extern方法更改为调用DLL的方法(无P / Invoke)。

Reflector将在这里提供帮助。