bcdedit /复制语法不正确

bcdedit /copy syntax not correct

我正尝试在我的工作笔记本电脑上 运行 Oracle Virtual Box。我收到一条错误消息说它不能 运行 因为我正在 运行ning Hyper-v。我正在尝试按照 Scott Hanselman's Blog 上的说明进行操作,这些说明过去曾在我的个人笔记本电脑上使用过,但也有类似的问题。

我运行:

bcdedit /copy {current} /d "No Hyper V"
The copy command specified is not valid.
Run "bcdedit /?" for command line assistance.
The parameter is incorrect.

我运行

bcdedit /copy {current} /d /?

This command creates a copy of the specified boot entry.

bcdedit [/store <filename>] /copy {<id>} /d <description>

    <filename>      Specifies the store to be used. If this option is not
                    specified, the system store is used. For more information,
                    run "bcdedit /? store".

    <id>            Specifies the identifier of the entry to be copied.
                    For more information about identifiers, run
                    "bcdedit /? ID".

    <description>   Specifies the description to be applied to the new entry.

Example:

The following command creates a copy of the specified operating system boot
entry:

    bcdedit /copy {cbd971bf-b7b8-4885-951a-fa03044f5d71} /d "Copy of entry"

bcdedit /? ID

IDENTIFIERS

Many of the Bcdedit commands require identifiers. An identifier
uniquely identifies entries contained in the store. An identifier takes the
form of a globally unique identifier, or GUID. A GUID has the following format,
where each "x" represents a hexadecimal digit.

    {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

For example:

    {d2b69192-8f14-11da-a31f-ea816ab185e9}

The position of the dashes (-) and the braces at the beginning and end of the
GUID are required.

Several entries can be identified by well-known identifiers. If an entry has a
well-known identifier, BCDedit displays it in output unless the /v command-line
switch is used. For more information, run "bcdedit /? /v".

The well-known identifiers are as follows:

    {bootmgr}               Specifies the Windows boot manager entry.

    {fwbootmgr}             Specifies the firmware boot manager entry,
                            specifically on systems that implement the
                            Extensible Firmware Interface (EFI) specification.

    {memdiag}               Specifies the memory diagnostic application entry.

    {ntldr}                 Specifies a OS loader (Ntldr) that can be used
                            to start operating systems earlier than Windows
                            Vista.

    {current}               Specifies a virtual identifier that corresponds to
                            the operating system boot entry for the operating
                            system that is currently running.

但看起来我的语法没有问题,有人知道我做错了什么吗?

Powershell 似乎是问题所在。在我的 powershell 提示符下,我输入了 cmd,然后输入 运行 bcdedit /copy {current} /d "No Hyper V",没有出现任何错误。

bcdedit --% /copy {current} /d "No Hyper V"

停止-解析符号--%

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_parsing

我遇到了完全相同的问题。我从微软找到了这个 documentation of bcdedit 的解决方案。当您使用 powershell 而不是 cmd 时,这只是一个问题。

你只需要将引导入口的标识符设置成双引号:

bcdedit /copy "{current}" /d "No Hyper-V"

当 shell/command 提示不是 运行 作为管理员时,我遇到了同样的问题。

当不是 运行 管理员时,windows 不允许对 BCD 进行任何读取或写入

> bcdedit /v
The boot configuration data store could not be opened.
Access is denied.

运行 shell 或管理员命令提示符解决了问题。