короче проблема в следуюшем. Хочу открыть файл вида c:\path\nameofexe.ini вот код: Код (Text): .386 .model flat,stdcall option casemap:none includelib c:\masm32\lib\kernel32.lib includelib c:\masm32\lib\User32.lib include c:\masm32\include\kernel32.inc include c:\masm32\include\user32.inc include c:\masm32\include\windows.inc .data sOk db 'All ok',0h sErr db 'Error',0h .code start: call GetCommandLine mov edi,eax push eax call lstrlen mov dword ptr[edi+eax-4],000696E69h ;ini push NULL push FILE_ATTRIBUTE_NORMAL push OPEN_EXISTING push NULL push NULL push GENERIC_READ push edi call CreateFile cmp eax,-1 je _eropn push eax call CloseHandle push MB_ICONINFORMATION push offset sOk push edi push NULL call MessageBox jmp _exit _eropn: push eax call CloseHandle push MB_ICONWARNING push offset sErr push edi push NULL call MessageBox _exit: xor eax,eax push eax call ExitProcess end start а теперь о проблеме: -просто запускаем программу - управление получает ветка _eropn:, в мессаджбоксе - "C:\path\nameofexe.eini" -запускаем под Olly 2.0 - управление получает ветка _eropn:, в мессаджбоксе - "C:\path\nameofexe.ini" -запускаем под w32Dasm 8.93 - все ОК, в мессаджбоксе - "C:\path\nameofexe.ini" я что-то нифига не могу понять, может дебагеры по разному инициализируют регистры или еще чего, значит я что-то упустил. Что? ОС - XP SP1, masm 8-ой hutch'евский. Опции: -линкрера: "/coff" -компилера: "/SUBSYSTEM:WINDOWS /ALIGN:4"
То, что возвращает может быть заключено в двойные кавычки. Кстати, лучше использовать GetModuleFileName, ибо command-line может быть пустой строкой.
Quantum: Спасибо! Действительно, дело было в кавычках. ок, я переделал c GetModuleFileName, работает. Но мне интересно, в каких случаях GetCommandLine может возвращать пустую строку, в msdn об этом ни слова.