【问题标题】:How to develop a GUI program that runs before Windows boots?如何开发在 Windows 启动之前运行的 GUI 程序?
【发布时间】:2012-08-02 12:34:36
【问题描述】:

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

我知道可以开发一个 bootkit - 但是为它开发漂亮的 UI 需要大量的工作。另一种方法是 NT 原生应用程序,但它也不支持任何类型的 GUI,除了颜色有限。对 Acronis 或类似解决方案如何工作有任何想法吗?谢谢你

【问题讨论】:

  • 其中几个使用“Windows 预安装环境”又名 WinPE。
  • 谢谢 - 这是我忘记提及的另一种方式。然而,显然 Acronis 使用了其他方法 - 只是因为您无法像 Win PE 那样看到 Windows 加载。对我来说,Win PE 的主要问题是加载时间过长——它的加载速度甚至比主操作系统慢得多。
  • @Isso:通常情况下,WinPE 加载速度非常快,肯定比 Windows 本身快得多。您是否正在考虑从 CD 引导它的时间?我相信另一种常见的方法是使用精心精简的 Linux 或 BSD 发行版。
  • Harry,对我来说,没有网络支持的 WinPE 如果从主驱动器加载大约需要 25 秒,如果从 CD 加载则需要 40 秒。在网络支持下,它需要 45 秒(主驱动器)和一分钟以上(CD)。主系统加载仅需 12 秒。该机器对于所有测试都是相同的,Windows 7 x64 的全新安装,带有 SSD 的 i7。总体而言,WinPE 对我来说是完全可以接受的,我只是想知道是否有其他更快的解决方案,比如 Acronis。而安克诺斯到底用的是什么???

标签: c++ windows user-interface boot


【解决方案1】:

Acronis 实际上会引导至从内存运行的 Linux 环境。 GUI 由某些版本的 XWindows 提供,很可能使用帧缓冲设备。我上次检查时他们使用的 UI 工具包是 Fox Toolkit。

当您退出它时,它会热启动计算机以重新启动到 Windows。所以它只是另一个引导选项,而不是预引导选项。您也可以这样做,但创建一个实时 Linux 系统并不容易。您也可以按照上面的建议查看 WinPE,但随之而来的是很多许可。

【讨论】:

    【解决方案2】:

    听起来你需要一个引导加载程序。

    如何开发自己的引导加载器:http://www.codeproject.com/Articles/36907/How-to-develop-your-own-Boot-Loader

    【讨论】:

    • 我在原帖中提到过 - 问题是为它创建 GUI 的复杂性
    【解决方案3】:

    首先,如果您正在编写一个在操作系统启动之前运行的程序,那么您就没有操作系统。所以忘记诸如“NT native app”之类的东西。

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

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

    【讨论】:

    • 图形 BIOS 固件设置如今风靡一时。但他不需要“没有操作系统”,他只需要不启动可能需要修复的主操作系统安装。
    • 我同意 NT 原生应用严格来说不是“在操作系统之前启动”,但是它允许对系统驱动器进行必要的修改,这就是为什么我提到它是一种潜在的方法。对不起,如果我不清楚。当然,显而易见的解决方案是从头开始构建 GUI,但这确实需要大量工作,而且考虑到市场上有很多类似的程序,我很确定他们使用其他方法,只是因为开发这样的 UI 可能需要比他们软件的主要功能还要多的时间。
    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多