The situation:
I need to convert our current development environment from Windows XP 32-bit to Windows Vista 64-bit (*). 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 (32-bit or 64-bit). 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?
(*) 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 it is surely overkill. Besides, it was hard enough convincing our IT department to give out Vista machines!
Best Answer
If you ran cmd from a 32-bit process, you'd get the 32-bit cmd because of File Redirection (http://msdn.microsoft.com/en-us/library/aa384187.aspx). Do you get the 32-bit version of CMD when you run it from Explorer?