最新のMSYS32をWindows 2000で動かす実験 その2

最新のMSYS32をWindows 2000で動かす実験 その1
Microsoft、MSDNの技術情報からXP非対応などのパラメータの情報も削除する

対策してリベンジ

C:\msys32\usr\bin>dash
     18 [main] dash 1636 C:\msys32\usr\bin\dash.exe: *** fatal error - couldn't
dynamically determine load address for 'GetSystemTimePreciseAsFileTime' (handle
0x77E50000), Win32 error 127
Stack trace:
Frame     Function  Args

GetSystemTimePreciseAsFileTime は、Windows 8以降の関数。
嘘やろ・ω・!

          lea    eax,[ebx+30h]
          sub    esp,00000004h
          mov    [esp+08h],eax
          lea    eax,[ebx+2Ch]
          mov    [esp+04h],eax
          lea    eax,[ebx+28h]
          mov    [esp],eax
          call    jmp_ntdll.dll!RtlGetNtVersionNumbers
          sub    esp,0000000Ch
          cmp    dword ptr [ebx+28h],00000006h
          jnz    L6111E6C0 // Win XP/2000/2003/NT
          mov    eax,[ebx+2Ch]
          cmp    eax,00000001h
          jz     L6111E710 // Win7
          jc     L6111E724 // Vista
          cmp    eax,00000003h
          ja     L6111E6C9 // Windows 10
          mov    dword ptr [ebx+0000016Ch],L612E01B0
          mov    ecx,L612E01B0 // Windows 8
 L6111E630:
      :

 L6111E6C0:
          cmp    dword ptr [ebx+30h],00002959h // Windows 10 Build 10585 ?
          ja     L6111E6E0
 L6111E6C9:
          mov    dword ptr [ebx+0000016Ch],L612E01A0
          mov    ecx,L612E01A0
          jmp    L6111E630

Windows NT 6.x 以外の場合、Windows 10 として処理する

|。・ω・) え…馬鹿なの?

試しに、dash を Vista 互換に設定

C:\msys32\usr\bin>dash
Cygwin WARNING:
  Couldn't compute FAST_CWD pointer.  This typically occurs if you're using
  an older Cygwin version on a newer Windows.  Please update to the latest
  available Cygwin version from https://cygwin.com/.  If the problem persists,
  please see https://cygwin.com/problems.html

$

動いた!

要するに、Windows Vista や 7で XP互換モードにするとエラーで動作しないのに Windows 10だと動く謎現象が発生する

だが、全てのファイルを Vista 互換で起動するのは非現実的だ
パッチ当てた方がよさそう ・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です