- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
16-bit app can't find file in workingdirectory.
Its an old 16-bit school program (windows, not DOS).
tried with 4.0.4 and 4.5.0, Xp sp3 Swedish..
Tried with WriteCopy and Merged as default isolationmode..
When the app starts, it looks for some small files in its workingdirectory. But for some reason it can't find it.
As you can see in the logdump, it uses old 8.1-like naming convention like "C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???" instead of %programfiles%\skolavtalet\bokstavslek\lexicon.s
The related log-lines goes:
028471 0a20 0a60 WOW32.dll :0ffd024b->ntvdm.exe :0f00765c demFileFindFirst (== no prototype available ==)
028472 0a20 0a60 ntvdm.exe :0f0072d9->ntdll.dll :7c901225 RtlInitString (=323F720h->struct {USHORT Length=CACBh, USHORT MaximumLength=0h, PSTR Buffer=CACBh->"v\06h\BBh\01h\E0h\E8h\13h\02hZ]\E9h\0Aho\CAh\02h"}, PCSZ =FFEC0B0h->'C')
028473 0a20 0a60 ntvdm.exe :0f0072d9<-ntdll.dll :7c901225 RtlInitString ->void=void (=323F720h->struct {USHORT Length=28h, USHORT MaximumLength=29h, PSTR Buffer=FFEC0B0h->"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, PCSZ =FFEC0B0h->'C')
028474 0a20 0a60 ntvdm.exe :0f0072e9->ntdll.dll :7c927465 RtlOemStringToUnicodeString (=323F744h->struct {USHORT Length=CC00h, USHORT MaximumLength=20Ch, PWSTR Buffer=*323F978h->L"1252"}, =323F720h->struct {USHORT Length=28h, USHORT MaximumLength=29h, PSTR Buffer=*FFEC0B0h->"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, BOOLEAN ='\00h')
028475 0a20 0a60 ntvdm.exe :0f0072e9<-ntdll.dll :7c927465 RtlOemStringToUnicodeString
028476 0a20 0a60 ntvdm.exe :0f010a1e->ntdll.dll :7c901225 RtlInitString (=323F494h->struct {USHORT Length=D634h, USHORT MaximumLength=287h, PSTR Buffer=323F4E8h->"8;"}, PCSZ =323F624h->'C')
028477 0a20 0a60 ntvdm.exe :0f010a1e<-ntdll.dll :7c901225 RtlInitString ->void=void (=323F494h->struct {USHORT Length=3h, USHORT MaximumLength=4h, PSTR Buffer=323F624h->"C:\"}, PCSZ =323F624h->'C')
028478 0a20 0a60 ntvdm.exe :0f010a2a->ntdll.dll :7c927465 RtlOemStringToUnicodeString (=7FFDCBF8h->struct {USHORT Length=50h, USHORT MaximumLength=20Ah, PWSTR Buffer=*7FFDCC00h->L"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, =323F494h->struct {USHORT Length=3h, USHORT MaximumLength=4h, PSTR Buffer=*323F624h->"C:\"}, BOOLEAN ='\00h')
028479 0a20 0a60 ntvdm.exe :0f010a2a<-ntdll.dll :7c927465 RtlOemStringToUnicodeString
028480 0a20 0a60 ntvdm.exe :0f010b04->kernel32.dll:7c80fa75 GetVolumeInformationW+ (LPCWSTR lpRootPathName=7FFDCC00h->L"C:\", LPWSTR lpVolumeNameBuffer=0h, DWORD nVolumeNameSize=0h, LPDWORD lpVolumeSerialNumber=0h<null pointer> <bad ptr>, LPDWORD lpMaximumComponentLength=0h, LPDWORD lpFileSystemFlags=0h<null pointer> <bad ptr>, LPWSTR lpFileSystemNameBuffer=2080A60h->L"\F720h\0207h\PROGRAM\SKBURK5\BOA3255\", DWORD nFileSystemNameSize=104h)
028481 0a20 0a60 ntvdm.exe :0f010b04<-kernel32.dll:7c80fa75 GetVolumeInformationW+ ->int=1h (LPCWSTR lpRootPathName=7FFDCC00h->L"C:\", LPWSTR lpVolumeNameBuffer=0h, DWORD nVolumeNameSize=0h, LPDWORD lpVolumeSerialNumber=0h<null pointer> <bad ptr>, LPDWORD lpMaximumComponentLength=0h, LPDWORD lpFileSystemFlags=0h<null pointer> <bad ptr>, LPWSTR lpFileSystemNameBuffer=2080A60h->L"NTFS", DWORD nFileSystemNameSize=1h)
028482 0a20 0a60 ntvdm.exe :0f010b45->ntdll.dll :7c901295 RtlInitUnicodeString (=323F4ACh->struct {USHORT Length=AA18h, USHORT MaximumLength=20Ah, PWSTR Buffer=2080A60h->L"NTFS"}, PCWSTR =2080A60h->L"NTFS")
028483 0a20 0a60 ntvdm.exe :0f010b45<-ntdll.dll :7c901295 RtlInitUnicodeString ->void=void (=323F4ACh->struct {USHORT Length=8h, USHORT MaximumLength=Ah, PWSTR Buffer=2080A60h->L"NTFS"}, PCWSTR =2080A60h->L"NTFS")
028484 0a20 0a60 ntvdm.exe :0f010b54->ntdll.dll :7c9271ea RtlUnicodeStringToOemString (POEM_STRING =323F4A4h->struct {USHORT Length=FFFEh, USHORT MaximumLength=105h, PSTR Buffer=323F520h->"qD{\02hh\D2h\98h\02h\A4h\F5h#\03hK\8Bh\86h\02h"}, PCUNICODE_STRING =323F4ACh->struct {USHORT Length=8h, USHORT MaximumLength=Ah, PWSTR Buffer=2080A60h->L"NTFS"}, BOOLEAN ='\00h')
028485 0a20 0a60 ntvdm.exe :0f010b54<-ntdll.dll :7c9271ea RtlUnicodeStringToOemString
028486 0a20 0a60 ntvdm.exe :0f010bcc->ntdll.dll :7c90ff0d RtlFreeHeap (HANDLE =2070000h, ULONG =0h, PVOID =*2080A60h)
028487 0a20 0a60 ntvdm.exe :0f010bcc<-ntdll.dll :7c90ff0d RtlFreeHeap ->char='\01h' (HANDLE =2070000h, ULONG =0h, PVOID =*2080A60h)
028488 0a20 0a60 ntvdm.exe :0f0077f2->ntdll.dll :7c9142d5 RtlDosPathNameToNtPathName_U
028489 0a20 0a60 ntvdm.exe :0f0077f2<-ntdll.dll :7c9142d5 RtlDosPathNameToNtPathName_U ->char='\01h' (PCWSTR =*323F978h->L"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???", =323F6F0h->struct {USHORT Length=58h, USHORT MaximumLength=21Ah, PWSTR Buffer=*2080370h->L"\??\C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, =323F440h->*20803B2h->L"LEXICON.???", =0hntdll.dll :7c913412 RtlCreateUnicodeString (=323F6F8h->struct {USHORT Length=0h, USHORT MaximumLength=0h, PWSTR Buffer=0h<null pointer> <bad ptr>}, LPCWSTR =20803B2h->L"LEXICON.???")
028491 0a20 0a60 ntvdm.exe :0f00780e<-ntdll.dll :7c913412 RtlCreateUnicodeString ->char='\01h' (=323F6F8h->struct {USHORT Length=16h, USHORT MaximumLength=18h, PWSTR Buffer=2082A40h->L"LEXICON.???"}, LPCWSTR =20803B2h->L"LEXICON.???")
028492 0a20 0a60 ntvdm.exe :0f007902->ntdll.dll :7c90d580 NtOpenFile+ (PHANDLE =323F4B4h->0h, ACCESS_MASK =100001h, =323F3FCh->struct {ULONG Length=18h, HANDLE RootDirectory=0h, ObjectName=400323F6h , ULONG Attributes=0h, PVOID SecurityDescriptor=0h<null pointer> <bad ptr>, PVOID SecurityQualityOfService=F1BA9800h}, =323F414h->struct {ULONG_PTR Information=E2F1BA98h}, ULONG =7h, ULONG =4021h)
028493 0000 0a60 NtOpenFile DesiredAccess=0x100001 ObjAttrib=323f3fc (RootDir=0 SD=0 SQoS=0 Attrib=40h OBJ_CASE_INSENSITIVE Name=323f6f0 (Len=64 Buffer=2080370 )) Iosb=0x323f414 ShareMode=0x7 FILE_SHARE_DELETE FILE_SHARE_READ FILE_SHARE_WRITE Options=0x4021 FILE_DIRECTORY_FILE FILE_SYNCHRONOUS_IO_NONALERT FILE_OPEN_FOR_BACKUP_INTENT -> 0x0 hFile=148 (success)
028494 0a20 0a60 ntvdm.exe :0f007902<-ntdll.dll :7c90d580 NtOpenFile+ ->long=0h (PHANDLE =323F4B4h->148h, ACCESS_MASK =100001h, =323F3FCh->struct {ULONG Length=18h, HANDLE RootDirectory=0h, ObjectName=400323F6h , ULONG Attributes=0h, PVOID SecurityDescriptor=0h<null pointer> <bad ptr>, PVOID SecurityQualityOfService=0h}, =323F414h->struct {ULONG_PTR Information=0h}, ULONG =7h, ULONG =4021h)
028495 0a20 0a60 ntvdm.exe :0f0079e1->ntdll.dll :7c90d750 NtQueryDirectoryFile+ (HANDLE =148h, HANDLE =0h, PIO_APC_ROUTINE =0h<null pointer> <bad ptr>, PVOID =0h, =323F414h->struct {ULONG_PTR Information=0h}, PVOID =*2086B98h, ULONG =400h, FILE_INFORMATION_CLASS =enum, BOOLEAN ='\00h', =323F6F8h->struct {USHORT Length=16h, USHORT MaximumLength=18h, PWSTR Buffer=*2082A40h->L"LEXICON">>>"}, BOOLEAN ='\00h') 028496 0a20 0a60 ntvdm.exe :0f0079e1<-ntdll.dll :7c90d750 *** NtQueryDirectoryFile+ ->long=C000000Fh (HANDLE =148h, HANDLE =0h, PIO_APC_ROUTINE =0h<null pointer> <bad ptr>, PVOID =0h<null pointer> <bad ptr>, =323F414h->struct {ULONG_PTR Information=0h}, PVOID =*2086B98h, ULONG =400h, FILE_INFORMATION_CLASS =enum, BOOLEAN ='\00h', =323F6F8h->struct {USHORT Length=16h, USHORT MaximumLength=18h, PWSTR Buffer=*2082A40h->L"LEXICON">>>"}, BOOLEAN ='\0Fh') *** GetLastError() returns 2=0x2 : Det går inte att hitta filen.
_______________________________________________
It cant find the file, which is called lexicon.s. Im not sure why the pattern goes "LEXICON.???", If i remember my expressions right that would require an extension with three letters to satisfy, but it didn't help to create a copy named LEXICON.SSS so Im probably out swimming ![]()
Of course the program works natively, and if I rename or remove lexicon.s from the native folder, the native program gives the very same error as the virtual.
I've tried the following.
ChildProcessEnvironmentDefault=External,
ChildProcessEnvironmentExceptions=wow32.dll;
VirtualizeExternalOutOfProcessCom=0.
The only progress I can make is if i change the isolation of %ProgramFilesDir%\Skolavtalet\bokstavslek\ from Full to WriteCopy, then it seems to find at least the native file from my native installation.
The virtual cmd-session sees all files
The entrypoint looks like this
ReadOnlyData=bin\Package.ro.tvr
Source=%ProgramFilesDir%\Skolavtalet\Bokstavslek\BOKSTAV.EXE
WorkingDirectory=%ProgramFilesDir%\Skolavtalet\Bokstavslek\
CommandLine="%ProgramFilesDir%\Skolavtalet\Bokstavslek\BOKSTAV.EXE" SAVEDIR=C:\Program\Skolavtalet\Bokstavslek\
Icon=%SystemRoot%\Installer\{5EB3F63C-EF7A-4464-8C7D-8D556762E8CA}\Bokstav.ico
Shortcuts=%Programs%\Skolavtalet\Bokstavslek
And as you see WorkingDirectory is set.
Is windows virtual dos forced to run external somehow?
Any help would be greatly appreciated!