访问Microsoft.Win32.UnsafeNativeMethods?

Microsoft在.NET框架中包含了一个非常好的Windows API包装器。 它存储在Microsoft.Win32.UnsafeNativeMethodsMicrosoft.Win32.SafeNativeMethodsMicrosoft.Win32.NativeMethods中。但遗憾的是,它们无法访问,因为它们被声明为私有。 有没有办法轻松访问它们?

这些类中的大多数方法定义(如果不是全部)都是具有DllImport属性的extern声明,这些属性通过P / Invoke引用Windows API中的函数。 无论这些声明在哪里都无关紧要。 您可以创建自己的名为UnsafeNativeMethods或SafeNativeMethods的类,并在其中放置引用相同Windows API函数的声明。 您可以在pinvoke.net上找到 C#的许多Windows API函数的签名。

这些类中包含的大多数function都是由.Net框架本身公开的; 你应该在进行API调用之前搜索(或在这里询问)。

要回答你的问题,不。
您可以做的最好的事情是从Reflector或参考源复制它们。

为了它的价值我一直认为应该有一个kernel32.interop.dll等静态方法已经DllImport’ed。 但我已经根据需要创建了自己的产品。 多年来我发现我很少使用它们中的一小部分,但是当我需要一个尚未导入的API时,它会非常痛苦。

原因可能是SuppressUnmanagedCodeSecurityAttribute的安全影响。 检查Move P / Invokes到NativeMethods类