代码重新启动Windows 8并从USB闪存驱动器启动

时间:2015-05-15 16:20:59

标签: c# windows boot bootloader

我正在开发一个在实时USB Linux上运行的系统。为了方便用户使用,我们需要开发一个Windows可执行文件。执行时,此可执行文件应在Windows上检测我们的USB记忆棒,并在下次启动时进行准备,计算机将从中启动。

我们希望使用以下行为重现此过程(https://askleo.com/how_do_i_boot_from_cddvdusb_in_windows_8/):

Boot from USB

但我们希望自动执行此操作,而不是强迫用户重新按下shift并选择“使用设备”。

我搜索了很多,发现了BCDedit。在其中,有一个命令/ bootsequence(https://technet.microsoft.com/en-us/magazine/ff700231.aspx) 声明:

  

BCD Edit使用/ bootsequence命令可以轻松完成。

     

在提升的命令提示符下,输入以下命令:   bcdedit / bootsequence {975a8204-9658-11dd-993e-9aea7965e9da}

     

只需将标识符(在此示例中为{975a8204-9658-11dd-993e-9aea7965e9da})更改为重新启动计算机时要引导的操作系统的标识符。

但是,我没有发现如何检测Linux上的启动分区(/ boot位于flashdrive内的ext2分区)并使用/ bootsequence从它启动。

有关如何操作的任何想法/ API或指南?

我真的很想找到并解决这个问题。

此致

1 个答案:

答案 0 :(得分:1)

您将很难从Windows启动加载程序启动Linux。当它是BIOS选择的引导加载程序时,linux USB驱动器将最容易启动。您可以通过以编程方式修改BIOS来实现您的目标。您将面临的挑战是必须为每个BIOS制造商提供代码,而不是所有代码都支持从其菜单外部进行编辑。