我一直在研究API的windows documentation,目标是用C++编写一个exe(或任何可以实现此功能的语言),它可以在Windows PE中运行时创建WIM映像。我找到了一个用于Dism API的.NET Wrapper,它似乎可以用于此目的,但我不确定.NET应用程序是否可以在Windows PE中成功运行。总体而言,我的问题是,我没有看到一个函数可以创建--而不是简单地修改--一个wim文件。
如果我不关心把它封装在一个.exe文件中,Dism documentation确实展示了如何初始化创建一个wim--这让我很好奇为什么API中没有类似的函数,请告诉我最简单的解决方案是让我的代码在代码中调用一个像system()这样的函数。
总之,我正在寻找一种从Windows PE中以编程方式(通过执行exe文件调用)创建wim文件的方法。
一如既往,谢谢你的帮助和建议。
2条答案
按热度按时间u5i3ibmn1#
我在一个项目中工作,在WinPE中使用DISM相当多。我们将WinPE与所有.net包配置为described here。然后WinPE可以配置为start an application。
我使用c#,但你可以用c++来做托管应用程序,我相信你知道。我发现把c#代码放到WinPE中要容易得多,但我想这更多的是我的经验。
我们与DISM交互的主要方式是使用System.Diagnostics.Process运行命令。该进程在单独的线程中运行,但API很简单,您可以等待(和/或超时)您的进程进行同步。这只使用DISM命令行界面,不过,如果您已将该软件包添加到WinPE映像中,则也可以使用Powershell cmdlet。从应用程序到DISM的“接口”可能看起来有些笨拙,但它工作可靠,您可以保持进程窗口不显示在屏幕上。这使得一个体面的异步平台运行一堆Windows映像实用程序,如DISKPART,DISM和BCDEDIT。
捕获新图像的主要方法是使用DISM /Capture-Image。听起来你已经发现了这个事实。有很多选项在某种程度上超出了这个问答的范围,但我希望这能让你走上一条有用的道路。
4nkexdtk2#
尽管这篇文章有点老,但这里有一个可能仍然与你相关的资源。也许这篇文章会有所帮助。
我编写了一个基于GUI的小工具,项目名为WIM-Backup,它使用Windows映像格式(WIM)在WinPE中创建计算机系统(操作系统映像)的完整备份,然后恢复它们。
该应用程序托管在GitHub上,是开源的,并在Apache 2.0许可证下提供。
此外,该存储库还包含一个逐步说明的指南,以帮助您安装和运行该存储库。