Доступ к Microsoft.Win32.UnsafeNativeMethods?

У Microsoft есть очень приятная shell Windows API, включенная в .NET framework. Он хранится в файлах Microsoft.Win32.UnsafeNativeMethods , Microsoft.Win32.SafeNativeMethods и Microsoft.Win32.NativeMethods. К сожалению, они недоступны, поскольку они объявлены как закрытые. Есть ли способ доступа к ним легко?

    Большинство определений методов в этих classах (если не все) являются объявлениями extern с атрибутами DllImport, которые относятся к функциям в Windows API через P / Invoke. В не имеет значения, где находятся эти объявления. Вы можете создать свой собственный class под названием UnsafeNativeMethods или SafeNativeMethods и разместить объявления, ссылающиеся на те же функции Windows API. Вы найдете подписи многих функций Windows API для C # на pinvoke.net .

    Большинство функциональных возможностей, содержащихся в этих classах, раскрывается самой картой .Net; вы должны искать (или спрашивать здесь) перед вызовом API.

    Чтобы ответить на ваш вопрос, нет.
    Лучшее, что вы можете сделать, это скопировать их из Reflector или справочного источника.

    Для чего я всегда думал, что должен был быть kernel32.interop.dll и т. Д. Со статическими методами, уже установленными DllImport. Но я прибегал к созданию моего собственного по мере необходимости. На протяжении многих лет я обнаружил, что редко использую больше, чем несколько из них, но это такая боль в заднице, когда мне нужен API, который я еще не импортировал.

    Причиной может быть влияние безопасности SuppressUnmanagedCodeSecurityAttribute. Проверьте перемещение P / вызывает class NativeMethods