Программно получить ключ меню загрузки BIOS - PullRequest
0 голосов
/ 29 ноября 2018

Как мне программно пройти через то, что означает, какая клавиша меню загрузки BIOS (например, F11) находится на определенном компьютере.Скажем, у меня есть приложение WinForms, которое техник может запустить, даже в административном режиме, и которое вернет горячую клавишу меню загрузки BIOS.

Одна мысль, которая у меня возникла, заключалась в использовании WMI и перечислении Win32_BIOS, например приведенный ниже код, но эта информация не возвращает горячую клавишу меню загрузки BIOS, по крайней мере, не напрямую.

Вот фрагмент кода C #.

using System;
using System.Management;

private void Form1_Load(object sender, EventArgs e)
{
    EnumBios();
}

private void EnumBios()
{
    try
    {
        string query = "SELECT * FROM Win32_BIOS";
        using (ManagementObjectSearcher wmiBiosItems = new ManagementObjectSearcher(query))
        {
            string textProperties = string.Empty;
            foreach (ManagementObject wmiBiosItem in wmiBiosItems.Get())
            {
                textProperties += $"BIOS Information{Environment.NewLine}";
                foreach (PropertyData item in wmiBiosItem.Properties)
                {
                    textProperties += $"\t{item.Name}";
                    if (null != item.Value)
                        textProperties += $" = {item.Value.ToString()}";
                    textProperties += $"{Environment.NewLine}";
                }
            }

            // Display the information.
            this.TxtOutput.Text = textProperties;
        }
    }

    catch (Exception ex)
    {
        this.TxtOutput.Text = ex.Message;
    }
}

Здесьэто вывод:

BIOS Information
    BiosCharacteristics = System.UInt16[]
    BIOSVersion = System.String[]
    BuildNumber
    Caption = BIOS Date: 02/16/16 09:38:11 Ver: V1.13B0
    CodeSet
    CurrentLanguage = en|US|iso8859-1
    Description = BIOS Date: 02/16/16 09:38:11 Ver: V1.13B0
    EmbeddedControllerMajorVersion = 255
    EmbeddedControllerMinorVersion = 255
    IdentificationCode
    InstallableLanguages = 1
    InstallDate
    LanguageEdition
    ListOfLanguages = System.String[]
    Manufacturer = American Megatrends Inc.
    Name = BIOS Date: 02/16/16 09:38:11 Ver: V1.13B0
    OtherTargetOS
    PrimaryBIOS = True
    ReleaseDate = 20160216000000.000000+000
    SerialNumber = To be filled by O.E.M.
    SMBIOSBIOSVersion = V1.13
    SMBIOSMajorVersion = 2
    SMBIOSMinorVersion = 8
    SMBIOSPresent = True
    SoftwareElementID = BIOS Date: 02/16/16 09:38:11 Ver: V1.13B0
    SoftwareElementState = 3
    Status = OK
    SystemBiosMajorVersion = 4
    SystemBiosMinorVersion = 6
    TargetOperatingSystem = 0
    Version = ALASKA - 1072009

Я не думаю, что WMI будет полезным, хотя может.Как можно программно определить BIOS, либо UEFI, либо устаревший не применяется для отображения меню загрузки, клавиши меню загрузки?

...