如何开发一个在Windows启动前运行的GUI程序?

3

我需要开发一个软件,在Windows启动之前运行。例如Acronis TrueImage或其他映像或分区操作软件允许启动到另一种环境,并且它们支持相当不错的图形界面。

我知道可以开发引导程序,但为其开发漂亮的用户界面将需要大量工作。另一种方法是NT本地应用程序,但它也不支持任何GUI类型,除了具有有限的颜色。有没有想过Acronis或类似解决方案是如何工作的?谢谢


1
其中一些使用“Windows预安装环境”,也称为WinPE。 - Ben Voigt
谢谢 - 这是我忘记提到的另一种方法。然而,显然Acronis使用其他方法 - 只是因为你看不到Windows像Win PE那样加载。对我来说,Win PE的主要问题是加载时间太长 - 它的加载速度甚至比主操作系统还慢。 - Isso
@Isso:通常情况下,WinPE的加载速度相当快,肯定比Windows本身要快得多。您可能是在考虑从CD启动时的情况吧?我认为另一种常见的方法是使用经过精心裁剪的Linux或BSD发行版。 - Harry Johnston
Harry,对我来说,如果从主驱动器加载,没有网络支持的WinPE大约需要25秒,如果从CD加载,则需要40秒。如果有网络支持,则需要45秒(主驱动器)或一分钟以上(CD)。主系统仅需12秒即可加载。所有测试使用相同的机器,干净安装了Windows 7 x64,i7和SSD。总体而言,WinPE对我来说是相当可接受的,我只是想知道是否有其他更快的解决方案,比如Acronis。那么Acronis最终使用的是什么? - Isso
3个回答

1

Acronis实际上是从内存中运行的Linux环境启动。GUI由某个版本的XWindows提供,最有可能使用帧缓冲设备。他们使用的UI工具包是Fox Toolkit,至少在我上次检查时是这样。

当您退出它时,它会热启动计算机以重新启动回Windows。因此,它只是另一个引导选项,而不是预引导选项。您可以做同样的事情,但创建一个实时Linux系统并不容易。您也可以像上面有人建议的那样查看WinPE,但是这需要很多许可证。


1

我在原帖中提到了这个问题 - 问题在于为其创建GUI的复杂性。 - Isso

0

首先,如果你正在编写一个在操作系统启动之前运行的程序,那么你没有操作系统。所以忘记像“NT本地应用程序”这样的东西。

编写这样的程序非常类似于为DOS编写程序。DOS没有提供任何图形、窗口、鼠标输入或其他任何服务(除了磁盘访问)。你过去必须自己做所有这些事情(这就是为什么DOS的图形程序总是看起来有点不同)。有一些工具包可以帮助构建图形界面,但我不知道今天是否还有这些工具包存在。

即使在今天,自己做所有的图形界面仍然是很多工作。可能会有一两个供应商为这样的应用程序提供GUI工具包,但这种东西将会非常罕见。只有像分区编辑器和RAID控制器这样的程序今天才真正需要它。


图形化的<strike>BIOS</strike>固件设置现在非常流行。但他不需要“没有操作系统”,他只需要不启动可能需要修复的主操作系统安装。 - Ben Voigt
我同意NT本地应用程序严格来说并不是“在操作系统之前启动”,但它允许对系统驱动器进行必要的修改,这就是为什么我提到它作为一个潜在的解决方案。如果我表达不清楚,那我很抱歉。当然,显而易见的解决方案是从头开始构建GUI,但这确实需要大量的工作,并且考虑到市场上有一堆类似的程序,我相信它们使用了其他方法,因为开发这样的UI可能比他们软件的主要功能还要花费更多的时间。 - Isso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接