Inno设置 - bcdedit无法正常工作

时间:2015-10-23 04:25:20

标签: windows inno-setup bcdedit

我需要提交命令:

bcdedit /set {default} recoveryenabled No

但它没有与Inno Setup合作。

我试过如下:

[Setup]
PrivilegesRequired=admin

[Run]
Filename: "{cmd}"; Parameters: "/c ""bcdedit.exe /set recoveryenabled No""";

但我仍然看到No未应用。如下所示,它仍然是Yes。但是当我从命令提示符手动执行相同的命令时,它可以工作。知道为什么它不在Inno Setup中工作吗?我还以管理员身份运行setup.exe

C:\windows\system32>bcdedit /v

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=\Device\HarddiskVolume2
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-GB

integrityservices       Enable

timeout                 30

Windows Boot Loader
-------------------

device                  partition=C:
path                    \windows\system32\winload.efi
description             Windows 8.1
locale                  en-GB

integrityservices       Enable
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \windows

nx                      OptIn
bootmenupolicy          Standard
quietboot               Yes

1 个答案:

答案 0 :(得分:1)

可能有很多原因。很难说,因为你没有提供太多信息来调试它。

使用/K代替/C是第一步,因为它会使cmd.exe窗口保持打开状态,以便您可以看到,如果有任何错误消息。

当我在一个简单的安装程序中使用您的[Run]部分条目时,我得到:

  

' bcdedit.exe的'不被视为内部或外部命令,   可操作程序或批处理文件。

在我的系统上(我相信它会与你的系统相同),因为我正在运行Windows 64位且bcdedit.exe位于C:\Windows\System32。作为32位应用程序中的Inno Setup,它默认为gets redirected to C:\Windows\SysWOW64(32位版本的C:\Windows\System32)。并且没有bcdedit.exe的32位版本。

添加Flags: 64bit以使Inno Setup找到64位版本的bcdedit.exe

此外,通过命令解释器(.exe)运行cmd.exe应用程序毫无意义。

[Run]
Filename: "bcdedit.exe"; Parameters: "/set recoveryenabled No"; Flags: 64bit

或使用64-bit install mode