internal static bool SupportsWin7Identifiers() { IntPtr automationCoreHandle = LoadLibraryHelper.SecureLoadLibraryEx(DllImport.UIAutomationCore, IntPtr.Zero, UnsafeNativeMethods.LoadLibraryFlags.LOAD_LIBRARY_SEARCH_SYSTEM32); if (automationCoreHandle != IntPtr.Zero) { IntPtr entryPoint = UnsafeNativeMethods.GetProcAddressNoThrow(new HandleRef(null, automationCoreHandle), StartListeningExportName); if (entryPoint != IntPtr.Zero) { return(true); } } return(false); }
/// <summary> /// Loads Wldp.dll and looks for WldpIsDynamicCodePolicyEnabled to determine whether DeviceGuard is enabled. /// </summary> private static bool IsDynamicCodePolicyEnabled() { bool isEnabled = false; IntPtr hModule = IntPtr.Zero; try { hModule = LoadLibraryHelper.SecureLoadLibraryEx(ExternDll.Wldp, IntPtr.Zero, UnsafeNativeMethods.LoadLibraryFlags.LOAD_LIBRARY_SEARCH_SYSTEM32); if (hModule != IntPtr.Zero) { IntPtr entryPoint = UnsafeNativeMethods.GetProcAddressNoThrow(new HandleRef(null, hModule), "WldpIsDynamicCodePolicyEnabled"); if (entryPoint != IntPtr.Zero) { int hResult = UnsafeNativeMethods.WldpIsDynamicCodePolicyEnabled(out isEnabled); if (hResult != NativeMethods.S_OK) { isEnabled = false; } } } } catch { } finally { if (hModule != IntPtr.Zero) { UnsafeNativeMethods.FreeLibrary(hModule); } } return(isEnabled); }