问题标签 [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.
delphi - 从 Delphi 访问 BcdStore
我正在尝试将此代码片段转换为 Delphi,但我被困在for each objWBL in colObjects
.
我的部分 q&d 翻译(注意,必须是管理员才能运行它):
我不知道如何在 Delphi 中遍历 BcdObject 数组。
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 引导加载程序标识符?
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窗口输出结束__ _ __ _ __ _ __ _ __ _ ___
任何帮助,将不胜感激。
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 与它有任何关系。
有人知道这种行为的可能原因吗?
powershell - bcdedit、bcdstore 和 powershell
所以我可以像在 cmd 提示符下一样在 powershell 脚本中编写 bcd 命令,例如:
但是我需要一个执行此操作的脚本:
如果它不这样做,那将是相反的:
我需要做的是在powershell中找到另一个启动的标识符,我不确定如何。所有谷歌搜索都说要这样做:
但是我不知道一旦我拥有了商店如何使用它,这似乎有点太复杂了。我的意思是应该有一个更简单的方法......不是吗?
vbscript - 无法使用 WMI 为 Windows BCD 设置 DeviceElements
我正在尝试使用 VBScript 以编程方式创建 Windows 7 BCD 存储。构建存储本身、BootMgr 和 OS Loader 似乎很顺利,就像为每个对象填充大部分元素一样。我遇到麻烦的地方是填充 device 和 osdevice 元素。这是有效的代码:
我遇到问题的代码是:
我在语句末尾尝试了分区路径的几种变体,包括从 win32_Volume 报告的分区的 DeviceId、旧的 boot.ini 样式 ARC 路径、“partition=”和其他似乎有效的语法在 bcd 编辑器中。
一些笔记。最终目标是在同一个物理磁盘上使用另一个分区。我不相信 SetPartitionDeviceElement 是正确的使用方法(它似乎完全是为了 vhds 的利益)。相反,如果我使用:
device 和 osdevice 元素似乎正确填充并反映了当前的启动分区,但是当我将活动分区更改为这个新 BCD 所在的分区并重新启动时,幸运的是没有错误,但它不会启动。这并不奇怪,因为这种方法不允许指定特定分区。我可以使用bcdedit使其工作
和
其中%guid%是 OS Loader 的 GUID。
这方面的有用信息非常少。我对 BCD WMI Provider的MSDN 页面和 BCD 上的旧 MS word 文档非常了解。我还发现 Visual BCD 编辑器在整理对象和元素类型方面很有用,但我真的坚持这个。任何人?
c# - 使用 C# BCD WMI Provider 来安全启动 Windows
我在网上搜索了有关如何仅使用 C# 将 SafeBoot 导入 Windows 的解决方案。从 Vista 及以上版本开始,安全启动是使用 BCD 控制的。当然你可以使用命令行工具“bcdedit”:
但是我不想使用这种方法。所以我的问题是:
如何仅使用 C# 重新启动到安全模式?
我已经看过这个 SO post,它让我开始了。但我仍然缺少这个难题的部分。
任何帮助是极大的赞赏。=)
windows - 使用 bcdedit 添加 UEFI 固件启动项
如何使用bcdedit
. 例如,我尝试了以下步骤,但没有添加引导条目。
这将返回一个新的 guid(比如 newguid)
提前致谢。
powershell - Powershell & bcdedit:识别恢复分区
我正在尝试编写 OEM 分区的消除/备份脚本(这只会使系统恢复到没有实际用途的过时版本)。
在许多系统上,使用 DISKPART会list partition
返回更多recovery
类型的分区:一个是官方的 Microsoft 恢复工具分区 (WinRE),其他来自 OEM。
第一步是安全地识别 WinRE 分区的位置。除了bcdedit
:
这将返回一个字符串,如:
其中卷号是要使用的分区Diskpart
。(可以备份剩余的恢复分区和 OEM 类型的分区)。
这是识别 WinRE 分区的正确程序吗?
还有更直接和/或更好的方法吗?
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 密钥?