Okay, here's a test program: #include <windows.h> #include <stdio.h> int main(int argc, const char *argv[]) { LPCSTR cmd; printf("argv[0] is %s\n", argv[0]); cmd = GetCommandLineA(); printf("GetCommandLine returns %s\n", cmd); return strcmp(argv[0], cmd); } Under Windows 2000, cmd.exe, run from the current directory, I get: argv[0] is cmdlinetest.exe GetCommandLine returns cmdlinetest.exe Under Windows 2000, command.com, run from the current directory, I get: argv[0] is CMDLIN~1.exe GetCommandLine returns CMDLIN~1.exe Under Windows 2000, run from the debugger, I get: argv[0] is c:\src\cmdlinetest\Debug\cmdlinetest.exe GetCommandLineA returns "c:\src\cmdlinetest\Debug\cmdlinetest.exe" (This case is interesting because it shows argv[0] and GetCommandLineA can be different even without arguments.) Under Windows ME, command.com, run from the current directory, I get: argv[0] is C:\SRC\CMDLIN~1\DEBUG\CMDLIN~1.EXE GetCommandLine returns C:\SRC\CMDLIN~1\DEBUG\CMDLIN~1.EXE This is the same executable, so it isn't a different _CRTMainStartup. I think this supports Frank's assertion. --Juan __________________________________ Do you Yahoo!? Yahoo! Finance: Get your refund fast by filing online. http://taxes.yahoo.com/filing.html