我需要提交命令:
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
答案 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