我可以通过任何方式检测驱动程序签名策略状态吗?

时间:2016-10-17 10:32:27

标签: c++ windows winapi

我有一个修改过的驱动程序,必须在禁用驱动程序签名时安装,因此我想检测此状态以提醒用户重新启动到SafeMode。 我曾尝试过这个命令:Bcdedit.exe -set TESTSIGNING OFF,但失败并提示

  

设置元素数据时发生错误。   该值受安全启动策略保护,无法修改或删除。

嗯......有什么方法可以做到吗?

--------

PS: 事实上,我的笔记本电脑型号是 MSI GS70 2PE 。我不认为它是一个便宜的,即使最新发布的GS73也不能支持完整的win10手势。它支持Windows10但MSI确实没有发布最新的驱动程序。如果我只修改并使用它我自己也没什么值得一提的。但是,我想在论坛上分享一下,以帮助其他普通用户使用。

我做错了吗?无法理解为什么有人会谈论其他事情。

2 个答案:

答案 0 :(得分:0)

使用以下代码来检测是否启用了TESTSIGNING

#include <Winternl.h>
#pragma comment(lib, "ntdll.lib")


//Check if testsigning is enabled
SYSTEM_CODEINTEGRITY_INFORMATION sci = {0};
ULONG dwcbSz = 0;
sci.Length = sizeof(sci);
if(NtQuerySystemInformation(
    /*SystemCodeIntegrityInformation*/ (SYSTEM_INFORMATION_CLASS)0x67, 
    &sci, 
    sizeof(sci), 
    &dwcbSz) >= 0 &&
    dwcbSz == sizeof(sci))
{
    BOOL bTestsigningEnabled = !!(sci.CodeIntegrityOptions & /*CODEINTEGRITY_OPTION_TESTSIGN*/ 0x2);
    //Note that testsigning will play no role if bit CODEINTEGRITY_OPTION_ENABLED (or 0x1) is not set in sci.CodeIntegrityOptions

}

答案 1 :(得分:0)

我宁愿将其包装成一个更好的函数,如下所示:

.img-fluid {
    max-width: 100%;
    height: auto;
}