Dan Kegel wrote:
I have a windows-free installation of current CVS wine, with wordpad.exe and the needed DLLs pulled in from a Windows ME installation. wordpad works great. However, ShellExecute(... "wordpad.exe", ".\stl\readme.wri" ...) is failing to find wordpad.exe for me. (The call in question is issued by the msvc4.0 setup.exe. The current directory when I run this is /mnt/cdrom, and stl/readme.wri is indeed there.)
Ignore the part about /usr/local/etc/system.reg.
With a few more traces, I see the first attempt to execute, triggered by the execfunc at line 608 of ShellExecuteExA32. This is just a test to see if the command line can be executed as is.
trace:exec:ShellExecuteExA32 mask=0x00000000 hwnd=(nil) verb="open" file="wordpad.exe" parm="readme.txt" dir="C:\" show=0x00000005 class=not used trace:exec:ShellExecuteExA32 execute:'wordpad.exe','readme.txt' trace:exec:SHELL_ExecuteA Execute wordpad.exe readme.txt from directory C:\ 08073208:Call kernel32.CreateProcessA(00000000,40582788 "wordpad.exe readme.txt",00000000,00000000,00000000,00000000,00000000,0040e4db "C:\",40581eb8,40581ea8) ret=40c8d29f trace:process:CreateProcessA app (null) cmdline "wordpad.exe readme.txt" trace:process:find_exe_file looking for "wordpad.exe"
According to MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/bas...
CreateProcess should check several places for an application, none of which include the registry key. So that call should fail, and it does.
08073208:Ret kernel32.CreateProcessA() retval=00000000 ret=40c8d29f
Next comes the test at line 614 of ShellExecuteExA32, which calls SHELL_FindExecutable.
trace:exec:SHELL_FindExecutable wordpad.exe 08073208:Call kernel32.SearchPathA(0040e4db "C:\",40582548 "wordpad.exe",40ca9be7 ".exe",00000100,40581af0,00000000) ret=40c8d43a 08073208:Ret kernel32.SearchPathA() retval=00000000 ret=40c8d43a trace:exec:SHELL_FindExecutable xlpFile=,extension=(null) warn:exec:SHELL_FindExecutable Returning 31 - No association
That call should have passed. It returns early at line 203, because xlpFile and the extension, returned from SearchPathA are null. That appears to be where things broke. Even if that passed, it does not appear that a check for the "App Patch" key is being done here, and it looks to me like it should be.
Is that enough to get you going further?