问题标签 [winpe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
213 浏览

batch-file - 批量移动文件会损坏在 Windows PE 中运行的目录

在工业 PC 上,有一个运行 Windows PE 的恢复分区。在这个 WPE 环境中,有一些批处理脚本正在运行,为用户提供了一些选择。例如“这个按 1,那个按 2”等等。

我目前正在进行一项操作,包括将文件移动和删除到外部驱动器。使用以下命令,我可以移动和删除文件:

但是,重新启动后,移动文件的源目录以及外部驱动器上的目标目录都已损坏。使用chkdsk它们可以恢复,但它当然不是一个稳定的状态。

根据Super User 上的这个问题wpeutil reboot可用于安全地重新启动 PC 并将所有数据刷新到磁盘。我希望这足以避免损坏的目录,但似乎在移动和/或删除操作后索引被破坏,因为chkdsk /f告诉我损坏的索引已恢复。

移动命令是否不同步运行?

即批处理不等到移动完成后才执行下一个命令?

如何确保在移动和删除文件时我的索引不会被破坏?

0 投票
1 回答
679 浏览

batch-file - 通过 diskpart.exe 删除所有驱动器号

因为我正在寻找一个程序化的答案,所以我把这个问题贴在 SO 上,尽管它的边界正如人们可以在这个相关和迁移的问题上看到的那样。

我正在尝试自动删除启动到 Windows PE 的系统中的所有分配的磁盘号。这要求解决方案是批处理的(而不是Powershell)。

为此,我打算在脚本模式中使用diskpart (如其他地方所建议的那样),它具有noerr选项和状态

默认情况下,如果 DiskPart 在尝试执行脚本任务时遇到错误,DiskPart 将停止处理脚本并显示错误代码(除非您指定了 noerr 参数)。...

noerr 参数使您能够执行有用的任务,例如使用单个脚本删除所有磁盘上的所有分区,而不考虑磁盘总数。

多种 方法可以遍历所有可能的驱动器名称并diskpart多次调用。

然而,这会带来一些令人不快的开销(以及每次之间必须等待 15 秒),正如这里所说

您可以运行连续的 DiskPart 脚本,但在连续脚本中再次运行 DiskPart 命令之前,必须在每个脚本之间留出至少 15 秒的时间才能完全关闭先前的执行

我的方法是完全忽略磁盘(因为选择一个卷也会选择适当的磁盘)并遍历所有字母以生成diskpartscript.txt类似的

不幸的是,该命令select volume没有开关noerr,因此脚本执行将在第一个不存在的卷之后停止。所以可能需要先找出所有现有的卷,然后只对它们进行操作。

所以我现在的问题是,如何通过一次diskpart.exe调用删除所有可能存在的磁盘上的所有可能存在的驱动器号。

0 投票
1 回答
573 浏览

c# - 在 C# 的 WinPE10 中接收 WM_QueryEndSession 或 WM_WTSSESSIONCHANGE

如果这个问题已被提出并已得到回答,我深表歉意,我花了三天时间在WinPE 中试验 WndProc()(适用于 Windows 10)。

如何在WinPE(Windows 10)中通过 WndProc()(或处理程序例程)“捕获”消息?

我有一个由 WinPEShl.exe 在 WinPE 启动时启动的自定义应用程序(用 C# .Net 4.5.2 编写)。这是当前提供对其他应用程序的访问以启用 Windows 部署或图像捕获的应用程序。

虽然此应用程序可能并不总是当前的 Windows 窗体,但在 Windows PE 关闭之前需要完成一两个例程。我希望通过覆盖的 WndProc() 函数在 WM_QUERYENDSESSION/WM_ENDSESSION 或 WTS_SESSION_CHANGE 通知上发生这种情况。

目前这是我的 WndProc() 函数:

Program.WriteLogFile() 是一个日志文件编写器(正如它所说的那样!),它将用于报告系统正在关闭。

从这个链接我知道,由于 WinPE 是 Windows 的流式版本,只有少数 API 可供使用。我已经查看了提到的两个 Windows API 集的两个 MinCore.lib 集 - 导致查找与 WndProc() 持有者函数相关的任何函数都没有成功。我什至搜索过 OneCore.lib。

然而,我确实找到了 WTSRegiSessionNotifications() 函数。同样,即使它们在 WinPE 中注册良好,如果另一个应用程序关闭系统(例如第一阶段完成时的 Windows 安装程序),我的 Shell 应用程序也不会收到消息。

Windows 中的测试在关联的应用程序日志文件中提供这两个结果。

我应该使用隐藏的控制台应用程序来捕获 CTRL_LOGOFF_EVENT/CTRL-SHUTDOWN_EVENT,还是应该使用服务(并且所有日志写入都通过它路由)?

可根据要求提供来自 Windows 10(按原样工作)和 WinPE 的日志文件。

感谢您在这件事上提供的任何帮助。

亲切的问候

里奇

0 投票
1 回答
709 浏览

powershell - winpe 的 BCD 条目仅启动准备自动修复

我正在尝试将计算机重新启动到包含 Windows PE 的闪存驱动器媒体中,但每次它只启动准备自动修复。这是生成新 bcd 条目的 powershell:

所有操作均已成功完成,据我所知,该条目似乎是正确的:

在此处输入图像描述

但是,当我重新启动计算机时,我曾经收到“正在修复自动恢复”的消息,然后最终会进入 Windows 恢复环境。我已经添加了bcdedit /set $variable recoveryenabled No,这使得它不可能进入恢复环境,但我现在得到一个不同的错误:

无法加载应用程序或操作系统,因为所需文件丢失或包含错误。

文件:\EFI\Boot\bootx64.efi 错误代码:0xc000007b

但是,如果我进入启动选项并手动选择此文件,它会启动到 winpe 就好了。

我不太确定出了什么问题,任何帮助将不胜感激。

如何修复我的代码以允许我在闪存驱动器上成功启动到 Windows PE?

0 投票
0 回答
140 浏览

c++ - 在 Windows 10 PE 上使用智能卡

我正在尝试开发一个必须与智能卡(和智能卡读卡器)一起使用的 c++ 项目——该项目必须在 Windows 10 pe 上运行——但是当我尝试测试该项目时,我从方法 SCardEstablishContext 收到错误 SCARD_E_NO_SERVICE。(但是 - 当我在标准 Windows 10 上尝试它时,它工作正常)

无论如何,我想知道是否有可能(以及如何)在 Windows10PE 上使用智能卡?因此,如果有人对 Windows10PE 有一些建议或更有经验,使用 SmartCards 或 Windows,我将非常高兴在这里获得一些帮助!

真的谢谢!:)

0 投票
2 回答
1093 浏览

c# - Windows PE WinForm 应用程序未执行

我正在制作集成 MS .NET Framework 的 Windows PE OS 的 Windows 映像 (.wim),以便运行 WinForm 应用程序作为计算机安装向导。

我有与这篇文章完全相同的问题,在从命令行执行应用程序时,它没有显示任何界面,也没有显示任何错误消息。我还检查了运行过程,我的应用程序没有一个。

在创建图像时,如MS 网站上所述,我首先导入了WinPE-WMI要求,然后是 .NET Framework 包WinPE-NetFX。接下来,我使用构建的映像创建了可启动的 USB 记忆棒。最后,我将应用程序复制到存储在 USB 上的附加目录中。

然后我只需从命令行执行应用程序。

你们有什么想法吗?

提前致谢并致以最诚挚的问候。

热雷米

0 投票
1 回答
603 浏览

c# - MSFT_Volume 格式方法,在 WinPE 中

我希望可能对我的查询有所帮助。

我正在尝试将最后一个模块写入基于 Windows 10 的 WinPE 的自定义 Windows 恢复环境。

该解决方案目前使用 DiskPart 创建磁盘分区(此处符合 Microsoft的建议),更改为不提供 WinRE 分区。

在对 MSDN 上的一个项目进行了大量研究和修改后,我设法获得了一个可以使用 WMI(MSFT_Disk、MSFT_Partition 和 MSFT_Volume)清除/分区和格式化磁盘的工作项目。这完全可以在 Windows 10 的 15 GiB 大小的虚拟磁盘上运行。

当我在 WinPE 中尝试它时(因为这将是它将使用它的操作系统),它在多个元素上失败了,即使方法被报告在那里)。(MSFT_Disk::Clear,MSFT_Volume::Format)。

在检查我在 DiskPart 中的工作结果时,我注意到即使 MSFT_Volume::Format 的返回值为 2“Unknown Error”,它实际上已经格式化了数据分区(NTFS,ClusterSize 4096)。但是,当将 Format 方法应用于 ESP(FAT32,簇大小 512/1024/4096)时,它会完全失败,文件系统仍被报告为 RAW,但将应用 AccessPath。“ExtendedStatus”只返回错误 2(除非我没有正确访问它)。

有没有其他人遇到过这个问题并设法解决了这个问题?多次谷歌搜索已经排除了可能存在 WMI 错误的想法,但在 PowerShell 中,而不是在 C#/C++ 中编码。下面是一些代码片段和屏幕截图:

创建分区:

参数声明为:

填充调用参数:

格式方法调用:

对于 ESP,以下适用:

我的控制台应用程序和 diskpart 结果的屏幕截图:

格式化磁盘控制台输出

磁盘部分结果

任何帮助/见解将不胜感激。

问候

里奇

0 投票
1 回答
1715 浏览

windows - 如何从 win PE 启动 chrome/chromium 浏览器?

我正在寻找一种从 Microsoft Win PE 启动 chrome 应用程序的方法。chrome是否支持该功能。

0 投票
1 回答
549 浏览

wix - 在 WinpE 中运行 Wix MSI 安装

我使用 Wix 创建了一个 MSI。msi 包含驱动程序 INF 和 Windows DPinst.exe。现在我正在尝试在 Winpe 中运行 msi 来更新驱动程序。

如何使用 Wix 创建可以在 Winpe 环境中运行的 msi?我使用了 Wix V3

0 投票
2 回答
420 浏览

windows - 仅使用预定义符号限制 Windows 批处理脚本中的用户输入

我为 WinPE 编写了以下 Windows 批处理脚本,以使一些任务更容易:

这个脚本似乎工作正常,直到用户输入除 1、2、3、4、R 或 S 以外的任何内容。

如果出现INPUTCHOICES任何错误符号只会导致“系统找不到指定的批次标签”消息并提示重新加载。

但如果将 R 或 S 以外的任何内容放入RB_OR_SD脚本中,则只执行下一个可用的批处理标签,这绝对不行。

我想用,和的范围以及.和的范围中的一个符号来限制用户输入1234INPUTCHOICESRSRB_OR_SD

最好使用户输入不区分大小写。

任何帮助将不胜感激。