(I have this weird configuration problem at work, so I thought I'd give this site a try. My Google-Fu is failing me...)
The situation:
I need to convert our current development environment from XP 32bit to Vista 64bit (*). Naturally, I've run into plenty of places in our build system where hardcoded paths were problematic (e.g. "C:\Program Files
" becoming "C:\Program Files (x86)
"). Fortunately, there is a %ProgramFiles%
environment variable which maps to the proper directory based on the source process (32bit or 64bit). So I updated the build scripts with %ProgramFiles%
and I was sure it'd be the end of that.
The build environment is called from the command-line (C:\Windows\System32\cmd.exe
).
The problem:
On one specific machine (namely my dev machine at work), it turns out that C:\Windows\System32\cmd.exe
is actually a 32bit process, so the scripts find the x86
version of the Program Files
directory and everything works great.
On every other 64bit machine I can find (including my home machine), C:\Windows\System32\cmd.exe
is the 64bit version, and the 32bit version is in C:\Windows\SysWow64\cmd.exe
. So the build scripts can't find anything they're looking for and fail.
I understand now that the 32bit cmd.exe
should be called explicitly if that's what you need, and by default you get a 64bit cmd.exe
. Typical case of WORKSFORME
...
The question is, what happened to the machine where this is not true? Why am I getting a 32bit cmd.exe
by default on one machine but not on others? In all cases I am explicitly executing C:\Windows\System32\cmd.exe
from the Start|Run
menu but getting different results on one machine only. All are running the same edition of Vista 64bit.
Any thoughts or insight?
Thanks!
(*) Please accept that I must do this, I am not at liberty to say why I am doing this. Re-installing the OS and everything from scratch would probably work, but is surely overkill. Besides, it was hard enough convincing our IT dept to give out Vista machines!