判断SecureBoot是否开启

发表于 2018-02-27  376 次阅读


因微软签名机制改动,在开启了SecureBoot的机器下,需要微软whql证书以及ev证书支持才能够加载驱动至内核。
所以为了规避该问题.只能在未开启的机器上使用普通证书。在开启的机器上使用2015年或者以前的证书

方法一:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot\State
UEFISecureBootEnabled
代码如下:

BOOLEAN _util_IsUEFISecureBootEnabled() {
HKEY hkey; DWORD dwVal;
DWORD WordType = REG_DWORD;
DWORD WordData = 4;
long ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\SecureBoot\\State", 0, KEY_READ, &hkey);
if (hkey == NULL)
return FALSE;
if (RegQueryValueEx(hkey, L"UEFISecureBootEnabled", NULL, &WordType, (LPBYTE)&dwVal, &WordData) != ERROR_SUCCESS) {
CloseHandle(hkey); return FALSE;
}
CloseHandle(hkey);
return dwVal;
}
方法二: fveapi.dll-->>> FveGetSecureBootBindingState(未实验)

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

博客管理员