【问题标题】:Using DISM Api to Capture Image Programatically within Windows PE Environment在 Windows PE 环境中使用 DISM Api 以编程方式捕获图像
【发布时间】:2021-09-15 16:54:02
【问题描述】:

我一直在查看 Dism API 的 windows documentation,目标是用 C++(或任何可以完成此任务的语言)编写一个可以在 Windows PE 中运行时创建 WIM 映像的 exe。我为 Dism API 找到了一个 .NET Wrapper,看起来它可能对此有用,但我不确定 .NET 应用程序是否会在 Windows PE 中成功运行。总的来说,我的问题是我没有看到一个可以创建(而且不只是修改)wim 文件的函数。

如果我不关心将其封装在 .exe 文件中,Dism documentation 确实显示了如何最初创建一个 wim——这让我很好奇为什么 api 中不存在类似的函数。请告知是否最简单的解决方案是让我的代码在代码中调用诸如 system() 之类的函数。

总而言之,我正在寻找一种在 Windows PE 中以编程方式(通过执行 exe 文件调用)创建 wim 文件的方法。

一如既往,感谢您的帮助和建议。

【问题讨论】:

    标签: c++ .net windows winpe dism


    【解决方案1】:

    我从事一个在 WinPE 中使用 DISM 的项目。我们将 WinPE 配置为所有 .net 包为described here。然后WinPE可以配置为start an application。

    我使用 c#,但我相信你可以在 c++ 中创建托管应用程序。我发现将 c# 代码放入 WinPE 相当容易,但我想这更多的是我的经验。

    我们用来与 DISM 交互的主要方式是使用 System.Diagnostics.Process 运行命令。该进程在单独的线程中运行,但 API 很简单,您可以等待(和/或超时)您的进程以进行同步。这仅使用 DISM 命令行界面,但如果您已将该包添加到 WinPE 映像,您也可以使用 powershell cmdlet。从您的应用程序到 DISM,它可能看起来像是一个 hacky 的“界面”,但它工作可靠,并且您可以阻止进程窗口显示在屏幕上。这为运行大量 Windows 映像实用程序(例如 DISKPART、DISM 和 BCDEDIT)提供了一个不错的异步平台。

    捕获新图像的主要方法是使用DISM /Capture-Image。听起来你已经发现了这个事实。许多选项超出了本 q/a 的范围,但我希望这能让您走上一条有用的道路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2018-03-26
      相关资源
      最近更新 更多