簡體   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