我不明白为什么下面的代码在c程序中运行时会返回"'bcdedit‘不是内部或外部命令“。bcdedit在cmd行上运行得很好。我怎么才能让它工作呢?
#include <stdio.h>
int main ()
{
system("bcdedit");
system("TIMEOUT /T 3");
return(0);
}发布于 2013-07-25 20:58:26
这是因为当您通过开始菜单甚至是执行窗口运行Command Prompt时,您运行的是位于C:\Windows\System32\cmd.exe的64位cmd版本,但是当从c程序调用cmd时,它将调用位于C:\Windows\SySWOW64\cmd.exe的32位cmd版本。这是因为你的C编译器生成了一个32位的应用程序。
根据MSDN的说法:
%windir%\System32目录为64位应用程序保留。创建64位版本的DLL时,大多数DLL文件名都没有更改,因此32位版本的DLL存储在不同的目录中。WOW64通过使用文件系统重定向器来隐藏这种差异。
在大多数情况下,只要32位应用程序尝试访问%windir%\System32,访问就会被重定向到%windir%\SysWOW64。
来源:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx
如果你比较两个动态链接库,你会发现它们是一样的,不同的是cmd。
问题是Windows x64在System32文件夹中提供了64位的bcdedit.exe,但没有提供32位的bcdedit.exe anywhere。因此,32位cmd cmd无法运行64位命令,因此它返回此命令无效。**
解决方案:您可以从Windows x86版本获取32位bcdedit,也可以编译64位应用程序。
发布于 2012-05-31 20:42:32
我认为你已经将一个命令切成了两个part.And我认为你想运行"bcdedit.exe /timeout 3",但是你给系统命令的参数提供了两个部分,一个是"bcedit.exe",另一个是"/timeout 3“。我觉得你应该写这篇文章
system("bcdedit.exe /timeout 3");要运行wanted.Hope命令,这将对您有所帮助
https://stackoverflow.com/questions/10827556
复制相似问题