Implemented BcdHelper
Updated README
This commit is contained in:
parent
3649ef508c
commit
abb4039ea0
@ -79,6 +79,9 @@
|
|||||||
<Reference Include="PInvoke.Windows.Core, Version=0.5.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL">
|
<Reference Include="PInvoke.Windows.Core, Version=0.5.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\PInvoke.Windows.Core.0.5.155\lib\net35\PInvoke.Windows.Core.dll</HintPath>
|
<HintPath>..\packages\PInvoke.Windows.Core.0.5.155\lib\net35\PInvoke.Windows.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="RunProcessAsTask, Version=1.2.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\RunProcessAsTask.1.2.3\lib\net45\RunProcessAsTask.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="SimpleMapi, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="SimpleMapi, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Simple-MAPI.NET.1.1.0\lib\net20\SimpleMapi.dll</HintPath>
|
<HintPath>..\packages\Simple-MAPI.NET.1.1.0\lib\net20\SimpleMapi.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@ -111,12 +114,14 @@
|
|||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</ApplicationDefinition>
|
</ApplicationDefinition>
|
||||||
|
<Compile Include="Exceptions\BcdAlterAllowPrereleaseSignaturesFailedException.cs" />
|
||||||
<Compile Include="Exceptions\NtQuerySystemInformationException.cs" />
|
<Compile Include="Exceptions\NtQuerySystemInformationException.cs" />
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Util\BcdHelper.cs" />
|
||||||
<Compile Include="Util\CodeIntegrityHelper.cs" />
|
<Compile Include="Util\CodeIntegrityHelper.cs" />
|
||||||
<Compile Include="Util\OsUpgradeDetection.cs" />
|
<Compile Include="Util\OsUpgradeDetection.cs" />
|
||||||
<Compile Include="Util\OSVersionInfo.cs" />
|
<Compile Include="Util\OSVersionInfo.cs" />
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace DerpingDrivers.Exceptions
|
||||||
|
{
|
||||||
|
public class BcdAlterAllowPrereleaseSignaturesFailedException : Exception
|
||||||
|
{
|
||||||
|
public BcdAlterAllowPrereleaseSignaturesFailedException()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public BcdAlterAllowPrereleaseSignaturesFailedException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public BcdAlterAllowPrereleaseSignaturesFailedException(string message, Exception innerException) : base(message, innerException)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BcdAlterAllowPrereleaseSignaturesFailedException(SerializationInfo info, StreamingContext context) : base(info, context)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -69,6 +69,8 @@ namespace DerpingDrivers
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
var t = BcdHelper.IsTestSignEnabled;
|
||||||
|
|
||||||
#region TESTSIGNING mode
|
#region TESTSIGNING mode
|
||||||
|
|
||||||
if (CodeIntegrityHelper.IsTestSignEnabled)
|
if (CodeIntegrityHelper.IsTestSignEnabled)
|
||||||
|
47
DerpingDrivers/Util/BcdHelper.cs
Normal file
47
DerpingDrivers/Util/BcdHelper.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
using DerpingDrivers.Exceptions;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
using RunProcessAsTask;
|
||||||
|
|
||||||
|
namespace DerpingDrivers.Util
|
||||||
|
{
|
||||||
|
public static class BcdHelper
|
||||||
|
{
|
||||||
|
public static bool IsTestSignEnabled
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var bootmgrDefaultGuid = (string) Registry.GetValue(
|
||||||
|
@"HKEY_LOCAL_MACHINE\BCD00000000\Objects\{9DEA862C-5CDD-4E70-ACC1-F32B344D4795}\Elements\23000003",
|
||||||
|
"Element", null);
|
||||||
|
|
||||||
|
var allowPrereleaseSignatures = (byte[]) Registry.GetValue(
|
||||||
|
$@"HKEY_LOCAL_MACHINE\BCD00000000\Objects\{bootmgrDefaultGuid}\Elements\16000049",
|
||||||
|
"Element", default(byte[]));
|
||||||
|
|
||||||
|
return allowPrereleaseSignatures != null && bool.Parse(allowPrereleaseSignatures[0].ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void EnableTestSigning()
|
||||||
|
{
|
||||||
|
// NOTE: haven't found an API for this (yet), so system() we go!
|
||||||
|
var ret = ProcessEx.RunAsync("Bcdedit.exe", "-set TESTSIGNING ON").Result;
|
||||||
|
|
||||||
|
if (ret.ExitCode != 0)
|
||||||
|
{
|
||||||
|
throw new BcdAlterAllowPrereleaseSignaturesFailedException("Couldn't enable TESTSIGNING");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DisableTestSigning()
|
||||||
|
{
|
||||||
|
// NOTE: haven't found an API for this (yet), so system() we go!
|
||||||
|
var ret = ProcessEx.RunAsync("Bcdedit.exe", "-set TESTSIGNING OFF").Result;
|
||||||
|
|
||||||
|
if (ret.ExitCode != 0)
|
||||||
|
{
|
||||||
|
throw new BcdAlterAllowPrereleaseSignaturesFailedException("Couldn't disable TESTSIGNING");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -12,5 +12,6 @@
|
|||||||
<package id="Markdig.Wpf" version="0.2.5" targetFramework="net461" />
|
<package id="Markdig.Wpf" version="0.2.5" targetFramework="net461" />
|
||||||
<package id="PInvoke.Kernel32" version="0.5.155" targetFramework="net461" />
|
<package id="PInvoke.Kernel32" version="0.5.155" targetFramework="net461" />
|
||||||
<package id="PInvoke.Windows.Core" version="0.5.155" targetFramework="net461" />
|
<package id="PInvoke.Windows.Core" version="0.5.155" targetFramework="net461" />
|
||||||
|
<package id="RunProcessAsTask" version="1.2.3" targetFramework="net461" />
|
||||||
<package id="Simple-MAPI.NET" version="1.1.0" targetFramework="net461" />
|
<package id="Simple-MAPI.NET" version="1.1.0" targetFramework="net461" />
|
||||||
</packages>
|
</packages>
|
10
README.md
10
README.md
@ -4,9 +4,13 @@
|
|||||||
|
|
||||||
- Icon by [Rebin Infotech](https://www.iconfinder.com/rebininfotech)
|
- Icon by [Rebin Infotech](https://www.iconfinder.com/rebininfotech)
|
||||||
- [Getting Operating System Version Info - Even for Windows 10!](https://www.codeproject.com/Articles/73000/Getting-Operating-System-Version-Info-Even-for-Win)
|
- [Getting Operating System Version Info - Even for Windows 10!](https://www.codeproject.com/Articles/73000/Getting-Operating-System-Version-Info-Even-for-Win)
|
||||||
- [How do I tell if Windows 10 was a fresh install or upgrade from 7/8?](https://superuser.com/questions/1032064/how-do-i-tell-if-windows-10-was-a-fresh-install-or-upgrade-from-7-8/1184670#1184670)
|
|
||||||
- [NtQuerySystemInformation](https://docs.microsoft.com/de-de/windows/desktop/api/winternl/nf-winternl-ntquerysysteminformation)
|
- [NtQuerySystemInformation](https://docs.microsoft.com/de-de/windows/desktop/api/winternl/nf-winternl-ntquerysysteminformation)
|
||||||
- [Can I have any way to detect the Driver Signing Policy status?](https://stackoverflow.com/questions/40084077/can-i-have-any-way-to-detect-the-driver-signing-policy-status/51230137#51230137)
|
|
||||||
- [The TESTSIGNING Boot Configuration Option](https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option)
|
- [The TESTSIGNING Boot Configuration Option](https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option)
|
||||||
- [Windows Version Numbers](http://techthoughts.info/windows-version-numbers/)
|
- [Windows Version Numbers](http://techthoughts.info/windows-version-numbers/)
|
||||||
- [Is there an easy way to check the .NET Framework version?](https://stackoverflow.com/questions/951856/is-there-an-easy-way-to-check-the-net-framework-version)
|
- [Super user: How do I tell if Windows 10 was a fresh install or upgrade from 7/8?](https://superuser.com/questions/1032064/how-do-i-tell-if-windows-10-was-a-fresh-install-or-upgrade-from-7-8/1184670#1184670)
|
||||||
|
- [Stack Overflow: Is there an easy way to check the .NET Framework version?](https://stackoverflow.com/questions/951856/is-there-an-easy-way-to-check-the-net-framework-version)
|
||||||
|
- [Stack Overflow: Can I have any way to detect the Driver Signing Policy status?](https://stackoverflow.com/questions/40084077/can-i-have-any-way-to-detect-the-driver-signing-policy-status/51230137#51230137)
|
||||||
|
- [BCDEdit: Mounting the BCD Store as a Registry Hive](http://www.mistyprojects.co.uk/documents/BCDEdit/files/bcd_as_registry_hive.htm)
|
||||||
|
- [BCDEdit: Objects and Elements](http://www.mistyprojects.co.uk/documents/BCDEdit/files/object_element_codes.htm)
|
||||||
|
- [Geoff Chappell: BCD Elements](https://www.geoffchappell.com/notes/windows/boot/bcd/elements.htm)
|
||||||
|
- [Geoff Chappell: Back Doors for Cross-Signed Drivers](https://www.geoffchappell.com/notes/security/whqlsettings/index.htm)
|
||||||
|
Loading…
Reference in New Issue
Block a user