问题标签 [bcdstore]

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 投票
2 回答
1204 浏览

delphi - 从 Delphi 访问 BcdStore

我正在尝试将此代码片段转换为 Delphi,但我被困在for each objWBL in colObjects.

我的部分 q&d 翻译(注意,必须是管理员才能运行它):

EnumerateObjects定义为

我不知道如何在 Delphi 中遍历 BcdObject 数组。

0 投票
2 回答
5451 浏览

c# - 使用 C# 访问 Windows 7 引导配置数据

我需要能够使用 c# 从引导配置数据存储中访问当前运行的 Windows 安装的标识符 GUID。它可以从运行的命令行返回:

我遇到的问题是,在 c# 中,如果我尝试直接运行此命令(即使程序以管理员身份运行),我会被告知 bcdedit 不存在。我在用着:

我研究的另一件事是使用 WMI,但我必须这样做的唯一参考是http://msdn.microsoft.com/en-us/library/windows/desktop/aa362673(v=vs.85).aspx这不是很有帮助。

最好的解决方案是如果我不必使用 bcdedit 而是可以使用本机 WMI 类。如何使用 C# 找到当前的 Windows 引导加载程序标识符?

0 投票
1 回答
913 浏览

wmic - 使用 wmic 访问 Bcd 失败

当我尝试使用 wmic 访问 BcdStore 类的 EnumerateObjects 方法时出现错误。

我最初运行 GetSystemDisk 方法是为了查看我可以访问 BcdStore(见下文)。这工作得很好。

__ _ __ _ __ _ __ _ __cmd窗口输出开始__ _ __ _ __ _ __ _ __ _ ___

C:>wmic /namespace:\root\wmi 类 BcdStore 调用 GetSystemDisk

执行 (BcdStore)->GetSystemDisk()

方法执行成功。

输出参数:

__PARAMETERS 的实例

{

};

__ _ __ _ __ _ __ _ __cmd窗口输出结束__ _ __ _ __ _ __ _ __ _ ___

然后我运行了 EnumerateObjects 方法,但是失败了,请看下面。不同的版本只是如何将参数传递给方法的不同变体,但这不起作用。

__ _ __ _ __ _ __ _ __cmd窗口输出开始__ _ __ _ __ _ __ _ __ _ ___

C:>wmic /namespace:\root\wmi 类 BcdStore 调用 EnumerateObjects 10200003

执行 (BcdStore)->EnumerateObjects()

错误:

说明 = 方法参数无效

C:>wmic /namespace:\root\wmi class BcdStore call EnumerateObjects Type=10200003

执行 (BcdStore)->EnumerateObjects()

错误:

说明 = 方法参数无效

C:>wmic /namespace:\root\wmi 类 BcdStore 调用 EnumerateObjects Type="H10200003"

错误:

描述 = 类型不匹配。

C:>wmic /namespace:\root\wmi 类 BcdStore 调用 EnumerateObjects 0x10200003

错误:

描述 = 类型不匹配。

__ _ __ _ __ _ __ _ __cmd窗口输出结束__ _ __ _ __ _ __ _ __ _ ___

任何帮助,将不胜感激。

0 投票
1 回答
871 浏览

windows - 无法使用 WMI 在 Windows 2012 Server 上读取 BCDStore 信息

我们正在使用以下函数来获取当前引导配置指定的处理器数量。这个数字纯粹用于记录。

下面的函数在 XP、Vista、7、2003 和 2008 上运行良好。但是,它在 Windows 2012 Server 上失败。

如果我尝试在 Win2012 上运行它,则会objWBL.GetElement引发EOleSysError带有 text 的异常OLE error D0000225。Google 没有找到与此错误代码相关的任何有意义的内容:(

堆栈跟踪表明异常是在 System.Win.ComObj.DispatchInvokeError 中触发的,后者由 VarDispInvoke 调用的 DispatchInvoke 调用。

所有这些都是使用 XE2 复制的。我可以尝试用 XE3 重复这个问题,但我不相信 Delphi RTL 与它有任何关系。

有人知道这种行为的可能原因吗?

0 投票
3 回答
15649 浏览

powershell - bcdedit、bcdstore 和 powershell

所以我可以像在 cmd 提示符下一样在 powershell 脚本中编写 bcd 命令,例如:

但是我需要一个执行此操作的脚本:

如果它不这样做,那将是相反的:

我需要做的是在powershell中找到另一个启动的标识符,我不确定如何。所有谷歌搜索都说要这样做:

但是我不知道一旦我拥有了商店如何使用它,这似乎有点太复杂了。我的意思是应该有一个更简单的方法......不是吗?

0 投票
1 回答
772 浏览

vbscript - 无法使用 WMI 为 Windows BCD 设置 DeviceElements

我正在尝试使用 VBScript 以编程方式创建 Windows 7 BCD 存储。构建存储本身、BootMgr 和 OS Loader 似乎很顺利,就像为每个对象填充大部分元素一样。我遇到麻烦的地方是填充 device 和 osdevice 元素。这是有效的代码:

我遇到问题的代码是:

我在语句末尾尝试了分区路径的几种变体,包括从 win32_Volume 报告的分区的 DeviceId、旧的 bo​​ot.ini 样式 ARC 路径、“partition=”和其他似乎有效的语法在 bcd 编辑器中。

一些笔记。最终目标是在同一个物理磁盘上使用另一个分区。我不相信 SetPartitionDeviceElement 是正确的使用方法(它似乎完全是为了 vhds 的利益)。相反,如果我使用:

device 和 osdevice 元素似乎正确填充并反映了当前的启动分区,但是当我将活动分区更改为这个新 BCD 所在的分区并重新启动时,幸运的是没有错误,但它不会启动。这并不奇怪,因为这种方法不允许指定特定分区。我可以使用bcdedit使其工作

其中%guid%是 OS Loader 的 GUID。

这方面的有用信息非常少。我对 BCD WMI Provider的MSDN 页面和 BCD 上的旧 MS word 文档非常了解。我还发现 Visual BCD 编辑器在整理对象和元素类型方面很有用,但我真的坚持这个。任何人?

0 投票
1 回答
1468 浏览

c# - 使用 C# BCD WMI Provider 来安全启动 Windows

我在网上搜索了有关如何仅使用 C# 将 SafeBoot 导入 Windows 的解决方案。从 Vista 及以上版本开始,安全启动是使用 BCD 控制的。当然你可以使用命令行工具“bcdedit”:

但是我不想使用这种方法。所以我的问题是:

如何仅使用 C# 重新启动到安全模式?

我已经看过这个 SO post,它让我开始了。但我仍然缺少这个难题的部分。

任何帮助是极大的赞赏。=)

BCD WMI Provider Reference帮助不大。

0 投票
1 回答
17701 浏览

windows - 使用 bcdedit 添加 UEFI 固件启动项

如何使用bcdedit. 例如,我尝试了以下步骤,但没有添加引导条目。

这将返回一个新的 guid(比如 newguid)

提前致谢。

0 投票
2 回答
1680 浏览

powershell - Powershell & bcdedit:识别恢复分区

我正在尝试编写 OEM 分区的消除/备份脚本(这只会使系统恢复到没有实际用途的过时版本)。

在许多系统上,使用 DISKPART会list partition返回更多recovery类型的分区:一个是官方的 Microsoft 恢复工具分区 (WinRE),其他来自 OEM。

第一步是安全地识别 WinRE 分区的位置。除了bcdedit

这将返回一个字符串,如:

其中卷号是要使用的分区Diskpart。(可以备份剩余的恢复分区和 OEM 类型的分区)。

这是识别 WinRE 分区的正确程序吗?

还有更直接和/或更好的方法吗?

0 投票
1 回答
85 浏览

c# - 如何获取用户模式总虚拟内存?

要求 Win 7/Win 10 (BIOS/EFI)。我一直在研究这个,还没有找到方法,故事如下:

在我bcdedit /set IncreaseUserVa 3872用来将用户模式虚拟地址空间设置为 3872MB 的程序中,然后我重新启动。

对于单元测试,我需要检查更改是否使用 C#。经过大量研究,我尝试了以下方法:

  • 这个类似的解决方案在这里。我遇到了一个例外:System.AccessViolationException HResult=0x80004003 Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.我在管理员帐户中以管理员身份运行 VS。
  • 使用Process.GetCurrentProcess().X(有一些内存属性),但那些不是整个系统的。
  • [systemdrive]:/boot 中的 BCD reg 文件包含此数据。在 regedit HKLM/BCD000000 中,我无法在网络上的任何地方找到要查看的 reg 密钥
  • 导入 Microsoft.VisualBasic 并使用 ComputerInfo 类,这个很有希望,但我设置为 3872MB (3.78GB) 并且它恢复为 ~3GB

任何人都可以帮忙吗?在 BCD000000 或其他方式中找到正确的 reg 密钥?