您的位置:首页 > 编程语言 > C语言/C++

VC++编译时错误 - 执行c windows system32 cmd.exe 时 出错

2016-03-24 19:48 477 查看

错误描述

今天编译一个VC++(6.0)工程,出现下述错误:

--------------------Configuration: GdiplusTest - Win32 Debug--------------------

Compiling resources...

Compiling...

StdAfx.cpp

Compiling...

GdiplusTest.cpp

Generating Code...

Compiling...

GdiplusTestDoc.cpp

Generating Code...

Compiling...

GdiplusTestView.cpp

Generating Code...

Compiling...

MainFrm.cpp

Generating Code...

'copyright.bat' 不是内部或外部命令,也不是可运行的程序

或批处理文件。

执行 c:\windows\system32\cmd.exe 时出错.

GdiplusTest.exe - 1 error(s), 0 warning(s)

遍查网上找不到错误原因;又没有错误号;不知何解;

搜索copyright.bat,找不到什么相关资料;不知为何物;

现把网上找的相关资料列在下面;以后有时间解决;

相关资料

========

用VC++6.0编译后出现 Error executing c:\windows\system32\cmd.exe.

--------------------Configuration: Utility - Win32 Debug--------------------

Performing Custom Build Step on .\Utility___Win32_Debug\Utility.lib

'.\Utility___Win32_Debug' 不是内部或外部命令,也不是可运行的程序

或批处理文件。

Error executing c:\windows\system32\cmd.exe.

IMd.exe - 1 error(s), 0 warning(s)

这是什么情况?

你的程序IMD有错误,是运行时的错误。你仔细检查程序。

程序肯定没问题,我编的是别人可以正常编译运行的代码,我估计是我环境配置的问题,但一直没找到原因。

========

VC6.0++在链接solidworks时出现这个问题怎么解决啊?执行 c:\windows\system32\cmd.exe 出错 [问题点数:40分]

无人解答

========

解决vc++中1个古怪问题:从“C:\WINDOWS\system32\cmd.exe”返回_system32

装的.net编c++程序时碰到1个古怪问题,新建的空白项目都会编译不过,编译时报错项目 : error PRJ0002 : 错误的结果1(从“C:\WINDOWS\system32\cmd.exe”返回)。但是会生成1个exe文件,运行exe文件时会说找不到msvcr80d.dll文件,上网一查,说是因为.net2005不适应fat32的原因,还有大虾提供了三种解决方案,我测试之后发现均行不通,后来忽然发现我安装.net的d盘是ntfs的,于是决定把项目copy到d盘试试,发现竟然通过,不过编译还是报上述错误,好在大牛提供了解决方案,选择属性->配置属性->清单工具->输入和输出->嵌入清单,把是改成否,果然,现在编译也能通过了,一切正常,

========

执行 c:\windows\system32\cmd.exe 时出错.解决办法

执行 c:\windows\system32\cmd.exe 时出错.

--------------------Configuration: 图像拼接技术 - Win32 Debug--------------------

文件名、目录名或卷标语法不正确。

执行 c:\windows\system32\cmd.exe 时出错.

图像拼接技术.exe - 1 error(s), 0 warning(s)

========

error PRJ0003 : 生成“C:\WINDOWS\system32\cmd.exe”时出错
http://blog.csdn.net/testcs_dn/article/details/8086348
最近使用visual studio 2005或visual studio 2008的编译项目时可能都遇到了这样的问题:

error PRJ0003 : 生成“C:\WINDOWS\system32\cmd.exe”时出错

1>Project : error PRJ0003 : Error spawning 'C:\Windows\System32\cmd.exe'.

1>Build log was saved at "file://c:\Users\Gilbert\Documents\Visual Studio 2008\Projects\Helloworld\Helloworld\Debug\BuildLog.htm"

1>Helloworld - 1 error(s), 0 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

经过网上大面积搜索:

可能工程坏了

删除Debug目录下的东西,   重新编译整个工程

clean 

rebuild 

确定所谓的“工具”-〉“选项”-> "VC++项目设置"->"解决方案资源管理器模式"里的“显示所有设置”有没有勾选,只要勾上就会有“项目和解决方案”的选项,在该项目下逐行添加

$(SystemRoot)\System32

$(SystemRoot)

$(SystemRoot)\System32\wbem  

都不能解决问题,

既然问题和'C:\Windows\System32\cmd.exe'有关,那就看看是不是它出了什么问题

开始》运行》cmd

啊?居然不能运行

打开C:\Windows\System32文件夹,查找cmd.exe,文件存在啊,双击运行,居然提示:

Windows找不到文件

文件夹明明在那摆着,却告诉我找不到文件。

难道是文件坏了?

去另一个系统把文件复制过来覆盖,问题依旧; 

真正原因;

内容如下:

在运行中输入cmd无法运行,windows 找不到文件 'c:\windows\system32\cmd.exe

打开电脑,在运行框中输入CMD,不是吧,系统居然提示找不到CMD文件,如下图示:

点击确定又会弹出另外一个框:

原以为是系统变量设置出了问题,直接打开我的电脑,进入C:\WINDOWS\SYSTEM32\目录下,找到CMD.EXE直接运行,也是这样的情况!

              马上进入到C:\WINDOWS\SYSTEM32\DLLCATCH\目录下,运行CMD.EXE文件,也是同样的提示:

运行command命令,虽然能弹出提示符状态,但是几乎所有的命令都不能用。用 GHOSTEXP.EXE 把原来备份中的CMD.EXE提取出来把 %SYSTEM% 和 %SYSTEM%\DLLCATCH 下的CMD.EXE文件覆盖掉,双击运行之后仍然是这样的提示。准备退出来的时候突然发现在C:\WINDOWS下有一个CDE.EXE.EXE莫非这个就是原来的CMD.EXE文件,只是被修改了名字换了个地方,但是双击之后仍旧不能运行。

注:%system%指的是C:\WINDOWS\SYSTEM32或者是C:\WINNT\SYSTEM32目录。更多的请参考:一文。

             糟了,中毒了,用咔吧查,什么病毒都没查出来,具体的什么病毒都不知道,看来只能自己找资料手动解决这个问题了。很有可能就是一些病毒修改了注册表,于是在运行框中输入REGEDIT,居然弹出现面的提示:

连注册表业打不开了,会不会是系统的EXE文件关联被修改了,这个需要通过修改注册表来恢复。但是注册表现在又打不开,用记事本编辑注册表文件,再导入不就可以了么?

             于是打开记事本文档,在里面输入以下内容(目的是允许当前用户运行cmd命令):

============================================

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\exefile\shell\open\command]

@="\"%1\" %*"

============================================

保存为cmd.reg(文件名可以任意),运行导入,结果弹出下面提示:

看来这个也不能用了,会不会是自己编辑注册表文件的时候输错了呢?带着这个疑问,我打开了另外一个注册表文件,也是同样的提示:

看来是病毒的原因了。

想通过批处理命令来对注册表操作,随便找了一个批处理命令双击,也不行:

突然想起来EXE文件虽然不可以运行,但是COM文件中应该可以运行吧!于是进入 C:\WINDOWS\ 把 regedit.exe 改名为 regedit.com 双击运行,即可打开注册表编辑器。

             这下就可以修复文件关联了,具体的操作请参考:一文。

             EXE文件关联修复之后,问题依旧,看来问题没有那么简单,不是EXE文件关联,那能是什么原因呢?

            会不会是因为用户权限被修改的原因呢(在注册表中可以设置禁止用户运行批处理文件和CMD),于是打开注册表编辑器,进入HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System

新建一个双字节值项DisableCMD(如果没有的话,有的话直接修改其值就可以了,但要注意的是必须是双字节值,不是的话需要删掉重建),将其值设为 0 (这里的作用就是使用户可以运行cmd和批处理文件),当然它也有其它的参数:修改其值为2,则命令解释器和批处理文件都不能够被运行;如果只是禁止命令解释器的运行,而运行批处理文件的运行,则修改DisableCMD的值为1。这些大家可以自行试试!

             当然也可以通过下面的注册表文件导入方法来实现(前提是等到注册表修复之后):

============================================

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]

"DisableCMD"=dword:00000000    

============================================

     虽然权限也设置过了,但是问题依旧没有解决。真的有点不知道该怎么办了?

虽然还没找到彻底解决的办法,但是可以先给大家提供一个临时解决的办法,将系统中的CMD.EXE,REGEDIT.EXE,MSCONFIG.EXE文件的扩展名都改为COM基本上就可以暂时使用了!只不过要在运行框中输入命令时要带上COM扩展名。      

          找了这么久,终于找到原因了,原来是中了映像劫持病毒了,对于这种病毒只需要把映像劫持给关了就行了,可以通过修改注册表来实现:把[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]项删除即可。

         好了,问题解决了,你改名的那些文件也该改过来了(把 COM 改回 EXE ),嘎嘎~~关于映像劫持方面的问题,过两天会给大家贴出来的!

把[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]项删除即可。

问题是这样的曲折!

========

最终的解决

后来发现如下界面有如下一个命令;删除之;



再编译好了;

运行程序,兔子出现了;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vc mfc