gpt4 book ai didi

c - 如何从我的 C 程序运行 bcdedit?

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:44 25 4
gpt4 key购买 nike

我不明白为什么以下代码在从 C 程序运行时返回“'bcdedit' 不是内部或外部命令”。 bcdedit 在 cmd 行上工作得很好。我怎样才能让它发挥作用?

#include <stdio.h>

int main ()
{
system("bcdedit");
system("TIMEOUT /T 3");
return(0);
}

最佳答案

发生这种情况是因为当您通过“开始”菜单或什至是“执行”窗口运行命令提示符时,您运行的是 64 位 cmd 版本,位于 C :\Windows\System32\cmd.exe,但是当从您的 c 程序调用 cmd 时,它会调用位于 的 32 位 cmd 版本C:\Windows\SySWOW64\cmd.exe发生这种情况是因为您的 C 编译器生成了 32 位应用程序。

根据 MSDN:

The %windir%\System32 directory is reserved for 64-bit applications. Most DLL file names were not changed when 64-bit versions of the DLLs were created, so 32-bit versions of the DLLs are stored in a different directory. WOW64 hides this difference by using a file system redirector.

In most cases, whenever a 32-bit application attempts to access %windir%\System32, the access is redirected to %windir%\SysWOW64.

来源:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx

如果比较两个 cmd,您会发现它们是相同的,不同的是 dll。

问题是 Windows x64 在 System32 文件夹中提供了 64 位的 bcdedit.exe,但没有提供 32 位的 bcdedit。 exe 任何地方。 所以32位的cmd无法运行64位的bcdedit,所以返回此命令无效。

解决方案:您既可以从 Windows x86 版本获取 32 位 bcdedit,也可以编译 64 位应用程序。

关于c - 如何从我的 C 程序运行 bcdedit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com