http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #12 from Markus mst@collogia.de 2009-09-11 15:32:37 --- Proved finally.
A dirty patch in dlls/ole32/storage32.c CreateFileW in lines 6132ff will make the program work:
hFile = CreateFileW( pwcsName, accessMode, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, /* shareMode, */, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0);
No more exceptions. Conclusion: The program does 2 times a CreateFileW with dwSHaredMode = 0 (exclusive) on the same file name. There is no CloseHandle in between. The second call will fail.
MSDN states: ... dwShareMode = 0. Prevents OTHER! processes from opening a file or device if they request delete, read, or write access ...
Wine may be too restrictive when a single process uses such a buggy file handling. As I have no Windows machine to check this out, hopefully someone can build a test case in the native environment and post the results.
Best regards.