谁动了我的环境变量

突然之间,我的Visual Studio 6.0不能编译任何程序了,总是提示如下错误:

Making help include file...
Compiling resources...
Compiling...
Command line error D2004 : '/Zm' requires an argument
Error executing cl.exe.

就在约1个小时前还是可以的,而且这一个小时内我一直在看代码,并没有安装或卸载过任何软件。

查看plg文件,也没有什么异常。找到错误代码D2004相关的介绍,然后添加/Zm100选项,但错误照旧。

将整个Visual Studio目录copy到另一台Server 2008系统上,竟然是好的。也就是说问题并不是VS6本身,可能是系统环境或动态库的问题。

目前的系统之前已休眠过多次,上次重启约在一周前,还是因为无线网络没有反应才重启的,但在此之后直到现在一切都工作良好。第一反应就是该重启系统了,但在重启之前还想再调查调查,毕竟重启或许能消除问题,但并不能真正解决它。

即然VS6 GUI环境不行,那就尝试下makefile。结果makefile方式编译成功,意料之外!

就在进行makefile的cmd窗口中,查看了下环境变量,发现环境变量竞然是ifskit 2003的编译环境。重新打开了一个cmd窗口,结果还是ifskit 2003的环境,相当诡异。

我之前编译ext2fsd以创建browser文件时用过ifskit 2003,这个窗口到还是是打开的,并没有关闭。但它怎么可能会成为系统默认环境的呢?误操作?我并没有更改过环境变量!难道是系统出错?

百思不得其解之际,想起来之前explorer崩溃过一次,我只得重新加载了explorer.exe进程。随即打开procexp查看explorer.exe进程的Environment:

process_env

问题原来在这里!explorer崩溃时我一般会在taskmgr里重新加载explorer.exe,有时也会在cmd窗口里。而这次,却是在ifskit 2003的编译环境里加载的,结果此环境就被explorer.exe作为子进程继承过去了。然后Visaul Stuido 6.0作为explorer的子进程也继承了同样的环境,结果编译时用错了的编译器。

先验证一下,CTRL-ALT-DEL调出taskmgr,然后加载了一个新的cmd.exe,查看环境变量,确定是正确的,不再是ifskit 2003的编译环境了。然后以新的环境重新启动Vistal Stdio 6.0,尝试编译程序,编译成功,至此问题解决!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注