https://bugs.winehq.org/show_bug.cgi?id=16697
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |DUPLICATE Status|NEW |RESOLVED CC| |focht@gmx.net Component|-unknown |programs Summary|HyperChem 8.0.x's licensing |HyperChem 8.0.x's licensing |system fails to properly |system fails to properly |generate a 'locking code,' |generate a 'locking code' |preventing program usage |(volume/fs serial for "c:" | |must be non-zero for | |license/machine id | |generator)
--- Comment #7 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming, still present.
Spoiler: It's bug 17823
--- snip --- $ pwd /home/focht/.wine/drive_c/Hyper80/Program
$ WINEDEBUG=+seh,+relay wine ./chem.exe >>log.txt 2>&1 ... 002b:Call user32.MessageBoxA(00000000,007cd1a0 "No license was found for this application. Would you like to invoke the SentinelLM Express Activator in order to obtain a license?",007bb168 "Activate License",00000024) ret=007d513a ... 002b:Call KERNEL32.CreateProcessA(00000000,003eb160 "C:\windows\Rainbow Technologies\Client Activator\2.0\English\ACTIVATOR.EXE @"C:\users\focht\Temp\CaActiva.rsp"",00000000,00000000,00000001,00000000,00000000,003eb265 "C:\Hyper80\Program",0032f3b4,0032f3f8) ret=003e130e ... 002b:Ret KERNEL32.CreateProcessA() retval=00000001 ret=003e130e --- snip ---
Content of the response file for the activator:
--- snip --- -T:0 -D:-1 -E:-1 -M:-1 -C:"C:\Hyper80\Program\HC80-Standalone.rac" --- snip ---
Keep a backup copy of the response file, it gets deleted on each run.
Manually running the activator:
--- snip --- $ pwd /home/focht/.wine/drive_c/windows/Rainbow Technologies/Client Activator/2.0/English
$ WINEDEBUG=+seh,+relay,+snoop,+mountmgr,+ntdll,+server wine ./ACTIVATOR.EXE @CaActiva.rsp >>log.txt 2>&1 ... 0009:Call KERNEL32.LoadLibraryA(017b9398 "C:\users\focht\Temp\CAFILES\lsapiw32.dll") ret=0040c9b3 ... 0009:Ret KERNEL32.LoadLibraryA() retval=01c80000 ret=0040c9b3 0009:Call KERNEL32.GetProcAddress(01c80000,00495399 "VLSinitialize") ret=0040d593 0009:Ret KERNEL32.GetProcAddress() retval=01d1031f ret=0040d593 0009:CALL LSAPIW32.VLSinitialize(<unknown, check return>) ret=0040d59b ... 0009:Call ws2_32.WSAStartup(00000101,0032f068) ret=01c9bd97 0009:Ret ws2_32.WSAStartup() retval=00000000 ret=01c9bd97 0009:RET LSAPIW32.VLSinitialize() retval=00000000 ret=0040d59b ... 0009:Call KERNEL32.GetProcAddress(01c80000,004953a7 "VLSerrorHandle") ret=0040d5c9 0009:Ret KERNEL32.GetProcAddress() retval=01d10143 ret=0040d5c9 0009:CALL LSAPIW32.VLSerrorHandle(<unknown, check return>) ret=0040d5d0 0009:RET LSAPIW32.VLSerrorHandle() retval=00000000 ret=0040d5d0 0009:Call KERNEL32.GetProcAddress(01c80000,004953c1 "VLSinitMachineID") ret=0040d635 0009:Ret KERNEL32.GetProcAddress() retval=01d102ec ret=0040d635 0009:CALL LSAPIW32.VLSinitMachineID(<unknown, check return>) ret=0040d63c 0009:RET LSAPIW32.VLSinitMachineID() retval=00000000 ret=0040d63c 0009:Call KERNEL32.GetProcAddress(01c80000,004953d2 "VLSgetMachineID") ret=0040d673 0009:Ret KERNEL32.GetProcAddress() retval=01d10220 ret=0040d673 0009:CALL LSAPIW32.VLSgetMachineID(00000004,0032f070,0032f190) ret=0040d67f ... 0009:Call KERNEL32.GetLogicalDriveStringsA(00000400,0032ec0c) ret=01c9b77d ... 0009:Ret KERNEL32.GetLogicalDriveStringsA() retval=0000000c ret=01c9b77d 0009:Call KERNEL32.GetDriveTypeA(0032ec0c "C:\") ret=01c9b793 ... 0009:Ret KERNEL32.GetDriveTypeA() retval=00000003 ret=01c9b793 ... 0009:Call KERNEL32.GetVolumeInformationA(0032ec0c "C:\",00000000,00000000,0032f00c,00000000,00000000,00000000,00000000) ret=01c9b7a9 ... 0009: get_handle_fd( handle=0088 ) 0009: get_handle_fd() = BAD_DEVICE_TYPE { type=0, cacheable=1, access=00000000, options=00000000 } ... 0009: ioctl( code=00024000, async={handle=0088,event=0000,iosb=0032d718,user=019d8a18,apc=00000000,apc_context=00000000}, in_data={} ) ... 0025:trace:mountmgr:harddisk_ioctl ioctl 24000 insize 0 outsize 804 ... 0009: select() = KERNEL_APC { call={APC_ASYNC_IO,user=019d8a18,sb=0032d718,status=INVALID_DEVICE_REQUEST}, apc_handle=0090, context={} } ... 0009:trace:ntdll:NtSetInformationFile (0x88,0x32d6b0,0x32d6a8,0x00000008,0x0000000e) ... 0009:Ret ntdll.NtSetInformationFile() retval=c00000cb ret=7b013e1a ... 0009:Call ntdll.NtSetInformationFile(00000088,0032ce80,0032ce78,00000008,0000000e) ret=7b013e1a 0009:trace:ntdll:NtSetInformationFile (0x88,0x32ce80,0x32ce78,0x00000008,0x0000000e) 0009:Ret ntdll.NtSetInformationFile() retval=c00000cb ret=7b013e1a 0009:Call ntdll.RtlNtStatusToDosError(c00000cb) ret=7b013e59 0009:Ret ntdll.RtlNtStatusToDosError() retval=00000042 ret=7b013e59 0009:trace:ntdll:FILE_CreateFile handle=0x32d700 access=80100000 name=L"\??\C:\.windows-serial" objattr=00000040 root=(nil) sec=(nil) io=0x32d710 alloc_size=(nil) attr=00000000 sharing=00000003 disp=1 options=00000020 ea=(nil).0x00000000 0009:warn:ntdll:FILE_CreateFile L"\??\C:\.windows-serial" not found (c0000034) ... 0009:Ret KERNEL32.GetVolumeInformationA() retval=00000001 ret=01c9b7a9 ... 0009:Call KERNEL32.GetDriveTypeA(0032ec10 "D:\") ret=01c9b793 ... 0009:Ret KERNEL32.GetDriveTypeA() retval=00000005 ret=01c9b793 0009:Call KERNEL32.GetDriveTypeA(0032ec14 "Z:\") ret=01c9b793 ... 0009:Ret KERNEL32.GetDriveTypeA() retval=00000003 ret=01c9b793 ... 0009:Call KERNEL32.GetVolumeInformationA(0032ec14 "Z:\",00000000,00000000,0032f00c,00000000,00000000,00000000,00000000) ret=01c9b7a9 ... 0009: ioctl( code=00024000, async={handle=0088,event=0000,iosb=0032d718,user=019d8a18,apc=00000000,apc_context=00000000}, in_data={} ) 0009: ioctl() = NOT_SUPPORTED { wait=0000, options=00000060, out_data={} } 0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 24000 (device=2 access=1 func=0 method=0) ... 0009:trace:ntdll:FILE_CreateFile handle=0x32d700 access=80100000 name=L"\??\Z:\.windows-serial" objattr=00000040 root=(nil) sec=(nil) io=0x32d710 alloc_size=(nil) attr=00000000 sharing=00000003 disp=1 options=00000020 ea=(nil).0x00000000 0009:warn:ntdll:FILE_CreateFile L"\??\Z:\.windows-serial" not found (c0000034) ... 0009:Ret KERNEL32.GetVolumeInformationA() retval=00000001 ret=01c9b7a9 0009:RET LSAPIW32.VLSgetMachineID() retval=00000000 ret=0040d67f 0009:Call KERNEL32.GetProcAddress(01c80000,004953e2 "VLSmachineIDtoLockCode") ret=0040d6bb 0009:Ret KERNEL32.GetProcAddress() retval=01d10363 ret=0040d6bb 0009:CALL LSAPIW32.VLSmachineIDtoLockCode(0032f070,00000000,0032f194) ret=0040d6c7 0009:RET LSAPIW32.VLSmachineIDtoLockCode() retval=00000000 ret=0040d6c7 ... --- snip ---
The lock code is generated from the machine id which is derived from the volume serial of the first fixed drive found (usually 'C:'). You can test by yourself by setting it to non-zero value or using Wine-Staging.
I will refine bug 17823 summary line to be more generic. It's already "staged" and a collector.
$ sha1sum hyper8010.zip e3d3cad9b233180213b8ec838d090f6b87126e8e hyper8010.zip
$ du -sh hyper8010.zip 179M hyper8010.zip
$ wine --version wine-5.6-193-g59987bc9ec
Regards
*** This bug has been marked as a duplicate of bug 17823 ***