繁体   English   中英

以编程方式确定是否启用了Windows 8安全启动

[英]Programmatically determine if Windows 8 secure boot is enabled

我正在编写一个安全应用程序,用于验证用户计算机上的许多安全规则和策略。 我需要实现一个测试方法,该方法在启用Windows 8的安全启动功能时返回true,或在禁用时返回false。

我搜索了信息,我看到这是一个BIOS功能。 所以我的问题是:是否可以使用C#代码获取Windows 8安全启动的状态? 如果有,怎么样?

从BIOS安全启动


更新:请参阅@ magicandre1981的答案,重要的是要提到状态注册表项仅在支持安全启动功能时存在。 如果您在计算机上找不到此密钥,则可能是您的计算机不支持安全启动。

检查安全启动状态/支持转到运行 - > msinfo32.exe并搜索“安全启动状态”

MSinfo32.exeHKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecureBoot\\State下的注册表中读取值UEFISecureBootEnabled

在此输入图像描述

在我的系统上, SecureBoot被禁用,返回值为0.所以我假设1表示已启用。

当然,Windows 10的代码也很好,并且应该处理大多数条件,包括遗留密钥和缺失密钥和异常,以及未来。打印到控制台同时还返回批处理或脚本使用的标志:

using System;
using Microsoft.Win32;

namespace CheckSecureBoot
{
    class Program
    {
        static int Main()
        {
            int rc = 0;
            string key = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot\State";
            string subkey = @"UEFISecureBootEnabled";
            try
            {
                object value = Registry.GetValue(key, subkey, rc);
                if (value != null)
                    rc = (int)value;
            }
            catch { }
            Console.WriteLine($@"{subkey} is {(rc >= 1 ? "On" : "Off")} ({rc.ToString()})");
            return rc;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM