2018幎ã®ã¯ãªã¹ãã¹ã€ãã«ãReactOSã®ãã¹ãæžã¿ã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ãã«.NET 4.0ã€ã³ã¹ããŒã©ãŒãããããšã«æ°ä»ããæ£åžžã«ã€ã³ã¹ããŒã«ãããŠã¢ããªã±ãŒã·ã§ã³ãèµ·åããããšã«é©ããŸããã ãããã4.0ã¯é·ãéé¢é£æ§ããªãã£ãã®ã§ãç§ã¯ããããªã¢ã€ãã¢ã«èšªããŸãã-ããŒãžã§ã³4.5ãã€ã³ã¹ããŒã«ããããšãããšã©ããªããŸããïŒ
ã€ã³ã¹ããŒã©ãŒã¯ãOSããŒãžã§ã³ãé©åã§ãªããšããã«è¿°ã¹ãŸããã äºæã¢ãŒãã§ã®èµ·åã圌ã«ãã£ãŠæ±ºå®ãããã€ã³ã¹ããŒã«ãæåŠããŸããã ç©äºã¯ããããå§ãŸãåã«ãã¹ãŠçµãã£ã...

ã¯ããä»ããŒãžã§ã³ãå€æŽããŸããããã¯åäœããŸãïŒ
ReactOSã¯Windows 2003ã®é¡äŒŒç©ãšããŠéçºãããŠãããããŒãžã§ã³5.2ãšããŠå ±åããŠããŸãã ã€ã³ã¹ããŒã«ã«ã¯å°ãªããšã6.0ãå¿ èŠã§ãããããã«Windows 7ãç®æãæ¹ãè¯ããšå€æããããŒãžã§ã³ã6.1ã«å€æŽããæ¹æ³ãæ¢ãå§ããŸããã ããŒãžã§ã³/ MajorVersion / MinorVersionã«ãããšãã³ãŒãã«ã¯ãäºæããªãå Žæã§ãã£ãŠããã·ã¹ãã å šäœã«ããã€ãã®å ŽæããããŸããã 5.2ãã6.1ã®ãã¹ãŠã®ãã¢ã眮ãæãããšãçµæã¯ãŒãã§ãã-OSã€ã³ã¹ããŒã©ãŒãèµ·åããŸããã§ããã ããŒãæã«freeldrãšntldrãããã«æ€çŽ¢ããŸããã4ã€ã®å Žæã§ã_WIN32_WINNT_WS03ã_WIN32_WINNT_WIN7ã«çœ®ãæããå¿ èŠããããŸããã OSãã€ã³ã¹ããŒã«ãããããã6.1ã§ããããšãéç¥ãããŸãã ããã£ãïŒ ãã ãªãããã®çç±ã§ããã®ãããªä»£æ¿åã§å®éã«ã€ã³ã¹ããŒã«ããããã®ã¯äœããããŸãããVirtualBoxGuest AdditionsãFirefoxã.NET 4.0ãExplorerã§ããäžåºŠã倱æããŸããã ããŠãå¿ èŠãªãã®ãã¹ãŠã§ISOãäœæããä»®æ³ãã·ã³ã«æ¥ç¶ããå¿ èŠããããŸãã æ å ã®ãã€ãããã©ã€ãã¯ãŸã åäœããŠãããã€ã³ã¹ããŒã©ãŒã¯ããããåã³èµ·åããŸãã ãã£ãïŒ èµ·åããããšããããŸãããç¹å®ã®OSã³ã³ããŒãã³ããäžè¶³ããŠããããšã蚎ããŸãã

1ã€ç®ã¯èªåæŽæ°ãµãŒãã¹ã2ã€ç®ã¯ä¿¡é Œã§ããã€ã³ã¹ããŒã©ãŒã§ãã ãã®ãããªãã®ã¯ãããŸãããå®éãReactOSã«ã¯Windowsã®æŽæ°ããããä¿¡é Œã§ããã€ã³ã¹ããŒã©ãŒã¯Windows 7ãšäžç·ã«è¡šç€ºããããããå®çŸ©ã«ãã£ãŠå®çŸ©ã§ããŸããã OKã PR 355æŽæ°ãµãŒãã¹ã®wusa.exeãšwuauserv.dllã®ã¹ã¿ããäœæããŸãã ä¿¡é Œã§ããã€ã³ã¹ããŒã©ãŒã¯ãWindows 7ããã¬ãžã¹ããªããŒãšå ±ã«32ããããã³ããŒããã ãã§ãã çŸåšãã€ã³ã¹ããŒã©ãŒã¯å¿ èŠãªãã¹ãŠã®ãã®ã®å¯çšæ§ãå€æããäžæ»Žã®è¡ã§å¥çŽãç· çµããã ãã§ãã
ãã¡ã€ã«æ€èšŒããã»ã¹ãæåããã€ã³ã¹ããŒã«ãéå§ãããŸãã kernel32ã¢ãžã¥ãŒã«ã®LCMapStringExé¢æ°ãæ¬ èœããŠãããšããã¡ãã»ãŒãžãããã«åãåããŸãã

ããããŸãããã³ãŒãå ã®é¢æ°ãæ¢ããŠããŸããé©ããããšã«ãé¢æ°ã¯ååšããŸãããäœããã®çç±ã§ãšã¯ã¹ããŒããªã¹ãã«è¿œå ãããŸããïŒåDLLã®ã«ãŒãã«ããCMakeLists.txtã®é£ã®ä»æ§ãã¡ã€ã«ïŒã ãã«ã/ã€ã³ã¹ããŒã«/å®è¡ããåã³åæ§ã®ãšã©ãŒã ããŠãã¹ã¯ãªããã¯ç¥ãããŠããŸãã ã€ã³ã¹ããŒã©ãŒãã¯ãªãã¯ãããŠãããã®æé ã5ã10åç¹°ãè¿ããåŸãã€ã³ã¹ããŒã©ãŒã¯ãOSã«ç¡äººã€ã³ã¹ããŒã«ã¢ãŒããããããšãGoogleã«ç¥ãããŸãã ãããè¡ãã«ã¯ããã¡ã€ã«boot \ bootdata \ bootcd \ unattend.infã§UnattendSetupEnabled = yesãæå¹ã«ããŸãã è¶ ããïŒ ãããã¯éåžžã«éãé²ãã§ããã®ã§ããè¶ã飲ãæéã¯ãããŸãããã€ã³ã¹ããŒã«å šäœã§2åéã§ãã
unattend.infã®èšå®
ããã§ãã€ã³ã¹ããŒã«ãã©ã«ããŒãReactOSããWindowsãŸãã¯BolgenosïŒãŸãã¯ãGreenteaOSãããããŸãããïŒïŒãã°ã©ãã£ãã¯ã¢ãŒãã®è§£å床ãããŒãã®ã€ã³ã¹ããŒã«ãããã«ããã€ãã®ãã€ã³ããå€æŽã§ããŸãã
ReactOSã¯2003ãšããŠèšè¿°ãããŠããããã6.0 +ã®ã³ãŒããç¹ã«ãµããŒãããŠãã人ã¯ããŸããã ãã®ãããªå Žæã¯ãæ¡ä»¶#if _WIN32_WINNT> = 0x600ãããã«ã¯#if 0ã§ã«ããŒãããŠãããæ©èœãã圢åŒã«ããå¿ èŠããããŸãã æ¬ èœããŠããé¢æ°ãè¿œå ããŸãïŒãã ããã³ãŒãã¯@ $ïŒ^ïŒ ã§ãïŒïŒãšã¯ã¹ããŒãããã«ã¯ïŒSleepConditionVariableCSã«ã¯RtlSleepConditionVariableCSãå¿ èŠã§ãïŒãSDKããããŒã®ã©ããã§æ§é äœ/ãã£ãŒã«ãã®ããã¯ã解é€ããŸãã ntdllãkernel32ãããã³advapi32ã䜿çšããããã«å¥åŠãªæŸèæ-äœããã®çç±ã§ãntdll_vistaãkernel32_vistaãããã³advapi32_vistaã®åœ¢åŒã§ã¢ããªã³ãäœæãããŸããã çœé³¥ãã¬ã³ãã«ã¯ã«ãã¹ã¯ãããã§ãªããã°ããã®ãããªæ±ºå®ãäžããŸããã çŸåšã確å®æ§ããããŸãã-githubã§PRãã¬ã€ã¢ãŠããããšãã«ãã³ãŒãã* _vista libã«è»¢éããããã«èŠæ±ãããŸãã ããã§æãé©ãã¹ãããšã¯ããã®ãããªé¢æ°ã¯ãã¹ãŠæ°ããAPIã§ãããã¡ã€ã³ã³ãŒããšå¹³åçã«å ±åããå¯èœæ§ãããããšã§ãããã®ãããªåºããã§ã³ã¹ã§å²ãŸããçç±ã¯æããã§ã¯ãããŸããã
ãããã®è©Šã¿ã¯æ°ãæéç¶ããŸããããæçµçã«ã¯ãã€ã³ã¹ããŒã©ãŒãããã»ã¹ã®éäžã§ãåªããèœäžãããã«ãã³ã°ãããšããäºå®ã«ãã¹ãŠãèœã¡çããŸããã
ããããã«èŠããªãããã«
å€ã«ã·ã§ã«ã«æ»ãããšã«ããŸããã ããã§ããéåžžã«å€ãã®æéãè²»ããããŠãããçµæã¯ãŒãã§ãã ä»åã¯ããã¹ãŠãç°ãªãæ¹æ³ã§è¡ãããšã«ããŸãã-å ±åãããããŒãžã§ã³ã5.2ãã6.1ã«å€æŽãããšããã¹ãŠãã©ã³ãã ã«æ©èœãããããããŒãžã§ã³ãå®å šã«ç°ãªãæ¹åããå€æŽããå¿ èŠããããããReactOSãNT6ã¢ãŒãã§å®å šã«ãã«ãããŠã¿ãŠãã ããã
ãããè¡ãã«ã¯ãã«ãŒãCMakeLists.txtã§ã次ã®æ¡ä»¶0x502ã0x600ã«çœ®ãæããŸãã ã¯ããèèªãæåããæéã¯ãããŸãããå°ãªããšã6.0ãåºåãããŸãã
# Version Options add_definitions(-DWINVER=0x502 -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x502 -D_WIN32_WINDOWS=0x502 -D_SETUPAPI_VER=0x502)
ãã®ãã³ãã£ãŒããã®æåãžã®æåŸ ã¯åœåã¯ãŸããŸãã§ããããå šäœãšããŠã®èãã¯çå®ã§ããã
ãã®åé¡ã®æ¬è³ªã¯ãNT6ã«ãŒãã«ã§ã¯å€ãã®æ©èœã眲åãå€æŽããããŒã¿æ§é ã®æ§æãšãã£ãŒã«ãã®é åºãç°ãªãããšã§ãã
#if (_WIN32_WINNT >= 0x600) NTSTATUS RxConstructSrvCall( _In_ PRX_CONTEXT RxContext, _In_ PIRP Irp, _In_ PSRV_CALL SrvCall, _Out_ PLOCK_HOLDING_STATE LockHoldingState); #else NTSTATUS RxConstructSrvCall( _In_ PRX_CONTEXT RxContext, _In_ PSRV_CALL SrvCall, _Out_ PLOCK_HOLDING_STATE LockHoldingState); #endif
ãã«ããšã©ãŒã¯ãå®åº«ã®ããã«éšãéããŸãããæãç°¡åãªã®ã¯ãããã€ãã®dllã®CMakeãã¡ã€ã«ã§ãWINVERãš_WIN32_WINNTã0x602ãªã©ã®ä»ã®å€ã«æ瀺çã«åå²ãåœãŠãããããšã§ãã åæã«ãReactOSã¯dllã§äžæ¯ã§ãããWINVERã¯çŸåš0x502ãã0x600ã«åå®çŸ©ãããŠããŸãã ããã€ãã®å®éã®ãã°ããããŸããïŒ356 ïŒ359 ïŒ747 ïŒ814 ïŒ815 ã
ããã¯åãæã2ãæç¶ãããã®çµæãã€ã¡ãŒãžã¯ãã¹ãŠã®æŸèæã§éãŸã£ãããèšçœ®è ã¯çåœã®åŸŽåãå šç¶ç€ºããªãã£ãã ããå°ããã¥ãŒãºãããªããªã£ã
è«çã¯éã§ã¯ãªã
æ°ããã¯ãªã¹ãã¹ãè¿ã¥ããŠããã.NET 4.5ã¯å¿ããããªããã®ã§ãã ç¹°ãè¿ããŸãããæåã®ãªãã·ã§ã³ã«æ»ãããã¹ãŠã®ç·šéãç¹°ãè¿ãããŸãããããã€ãã®å€æŽããããŸãã 以åã¯ãOSã«ã³ãŒãããªãé¢æ°ãèŠã€ãããªãã£ã代ããã«ãã¹ã¿ããäœæããã ãã ã£ãã®ã§ãWineã³ãŒãã§ããããæ¢ãããšã«ããŸããã ReactOSã«é©å¿ããŠã次ã®ïŒ1045ã«è»¢éããŸãã ã©ããã«ãã¹ã¿ãã®ä»£ããã«ãå®éã®ã³ãŒããæžãããšãã§ããŸã:) ïŒ1046 ã ãã®ãããªç·šéã«ãããã€ã³ã¹ããŒã©ãŒã¯ãã粟åçã«åäœãããæåããŠãçµäºããŸããããã€ã³ã¹ããŒã©ãŒãšã¯ç°ãªãã.NET 4.0ã¯ã€ã³ã¹ããŒã«åŸã«åèµ·åãæäŸããŸããã§ããããããèãªãçŽ æŽãïŒã helloWorldã¢ããªã±ãŒã·ã§ã³ãèµ·åããããšããŠããç»é¢ã«ã¯äœãèµ·ãããŸããã§ãã;ã¿ã¹ã¯ãããŒãžã£ãŒã§ããã¢ã¯ãã£ããã£ã«æ°ä»ãæéã¯ãããŸããã§ããã
ã€ã³ã¹ããŒã©ãŒã®å°ããªäœè«
ãã¹ã®äžçªæåã§ãã€ã³ã¹ããŒã©ãŒãèµ·åãããã³ã«åŸ
æ©ããªãããã«ããã©ã«ããŒã«è§£åããsetup.exeãæåã§ã¯ãªãã¯ããŸããã ã·ã§ãŒãã«ãããäœæããåŒæ°/ x86ã§å®è¡ããå¿
èŠããããŸã
å°ãåŸã«ãã€ã³ã¹ããŒã©ãŒã®ãªãœãŒã¹ã詳ãã調ã¹ãããšã«ããŸããããšã©ãŒã¡ãã»ãŒãžã®ããã¹ããšããã§ã®é©ããèŠã€ããŸããããã¹ãŠã®å¶éã¯ParameterInfo.xmlãã¡ã€ã«ã«ç€ºãããŠããŸãã StopBlockers-condition IsInOSCompatibilityModeã«ã€ããŠã³ã¡ã³ãããã ãã§ååã§ããã¹ãŠãåé¡ãªãéå§ãããŸãã OSããŒãžã§ã³ã5.2ãã6.0ã«å€æŽããç·šéãåé€ããã»ããã¢ããã·ã§ãŒãã«ããã§Vistaäºæã¢ãŒãããªã³ã«ãïŒãã®æ¹æ³ã§ã¯ãä¿¡é Œã§ããã€ã³ã¹ããŒã©ãŒãååšãããšã¯æ³å®ãããŠããŸããïŒãã€ã³ã¹ããŒã©ãŒãåæ§ã«æ£åžžã«çµäºããããã€ãã®æ©èœãè¿œå ããŸãã ãã ããæåã«4.0ãã€ã³ã¹ããŒã«ããŠããã€ã³ã¹ããŒã©ãŒ4.5ãå®è¡ããå Žåãããã»ã¹ã¯æ¢ã«ãªããŒããèŠæ±ããŠå®äºããŠããŸãïŒ åå©ïŒïŒ ãã ããã¯å¹žããªçµããã®ãªãç©èªã ãšèšã£ãã HelloWorldãèµ·åããããšãããšãçµæã¯ãããã«ç°ãªããŸãããããã»ã©å€§ããã¯ãããŸãã-ããã»ã¹ã¯11ã12MBã®ã¡ã¢ãªãæ¶è²»ãã20ç§åæ¢ããŠããçµäºããŸãã äºæã¢ãŒãã§èµ·åããŠã圹ã«ç«ã¡ãŸããïŒçµå±ãCLRã©ã³ã¿ã€ã ã¯åããã»ã¹ã§åå¥ã«èµ·åãããOSããŒãžã§ã³5.2ã®OSã§èµ·åããã·ã¹ãã å šäœã®ç°å¢ã§ã¯ãããŸããïŒã
ãã°ã«ã¯ãããŒãžã§ã³ã決å®ããåŒã³åºãããããŸãã

ããŒãžã§ã³6ãèŠæ±ãããå ŽåãOSããŒãžã§ã³ã6.0ã«çœ®ãæãããšããRtlVerifyVersionInfoãžã®ããã¯ãè¿œå ããŸããã ç¢å°ã§ããŒã¯ãããè¡ã¯ãªããªããŸããããçµæã¯åãã§ãã
ããããŒãšã³ãã§ã¯ãããŸããã
ãããã«
ãããããæåã®äœå°ã¯ã»ãšãã©ãªãããã®ç©èªã«è§Šçºãããããªãã¯ãæãã€ãã¿ãReactOSã³ãŒããããŠã³ããŒãããŠã³ã³ãã€ã«ããããšã§ããªããå§ãããã®ãå®æããæºåãã§ããŠããŸããïŒ ããã»ã©éããªãã ã»ãšãã©ãã¹ãŠã®PRã§ãå€æŽã¯ã¬ã€ã¢ãŠãæã«è¡ãããæåã¯ããã€ãã®è°è«ããããŸããããã®åŸãäž»èŠãªOSéçºè ã®æ³šæãªãã«å€æŽããã³ã°ããŸãã
äžèšãç¹°ãè¿ãã«ã¯ãããã¹ãå ã®ãªã³ã¯ã䜿çšããŠmasterãã©ã³ãã§PRãå®è¡ããspecãã¡ã€ã«å ã®äžé£ã®é¢æ°ã®ããã¯ã解é€ãïŒ-versionæ¡ä»¶ã®ããŒãžã§ã³ã0x500 +ã«çœ®ãæãïŒãããããŒã®ããã€ãã®0x600æ¡ä»¶ã解é€ããå¿ èŠããããŸã
.NET 4.5ã®å€æŽãã°
PRovã«å ããŠãå°ããªwinbase.h wincon.hãä¿®æ£ãã以äžã®ãªã¹ãããé¢æ°ãéãå¿
èŠããããŸã
advapi32
msvcrt
kernel32
advapi32
- EventWriteïŒã¹ã¿ãïŒ
- EventRegisterïŒã¹ã¿ãïŒ
- EventUnregisterïŒã¹ã¿ãïŒ
- RegLoadMUIStringA
- RegLoadMUIStringW
msvcrt
- _except_handler4_common
kernel32
- AcquireSRWLockExclusive
- AcquireSRWLockShared
- éãã
- CloseThreadpoolCleanupGroup
- CloseThreadpoolCleanupGroupMembers
- CloseThreadpoolIo
- CloseThreadpoolTimer
- CloseThreadpoolWait
- CloseThreadpoolWork
- SetThreadpoolTimer
- SetThreadpoolWait
- CompareStringEx
- CreateSemaphoreExAïŒã¹ã¿ãïŒ
- CreateSemaphoreExWïŒã¹ã¿ãïŒ
- äœæã¹ã¬ããããŒã«
- CreateThreadpoolCleanupGroup
- CreateThreadpoolIo
- CreateThreadpoolTimer
- CreateThreadpoolWait
- CreateThreadpoolWork
- EnumCalendarInfoExEx
- EnumDateFormatsExEx
- EnumSystemLocalesEx
- EnumTimeFormatsExEx
- FlushProcessWriteBuffersïŒã¹ã¿ãïŒ
- GetCalendarInfoEx
- GetDateFormatEx
- GetLocaleInfoEx
- IsValidLocaleNameïŒã¹ã¿ãïŒ
- GetNLSVersionExïŒã¹ã¿ãïŒ
- GetNumberFormatEx
- GetTickCount64
- GetTimeFormatEx
- GetUserDefaultLocaleName
- LCMapStringEx
- InitOnceExecuteOnce
- InitializeCriticalSectionEx
- InitializeSRWLock
- ãªãªãŒã¹SRWLockExclusive
- ãªãªãŒã¹SRWLockShared
- WerSetFlagsïŒã¹ã¿ãïŒ
çµã¿ç«ãŠãæéã¯ãããŸãããããã«æ¥ãŠæ§ç¯ããŠãã ããïŒ
ReactOSã®éçºã«åŸã£ãŠæ°ããã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããšãããšãããããããã€ãã®æ©èœã倱ãããããèå³æ·±ã/æçšãªPRãééãªããã³ã°ãããšããäºå®ã«åºããããŸããã ãããããç¥ã£ãŠããã®ã§ãäžè¶³ããŠããããŒã¹ãšPRã䜿çšããŠOSã¢ã»ã³ããªãå®æçã«ã³ã³ãã€ã«ããããšã«ããŸããïŒã¹ã±ãžã¥ãŒã«ãæ¯é±ãŸãã¯2é±éããšã«ç¶æãããïŒã ãã®ã¢ã»ã³ããªãè©ŠããŠã¿ãŠãã ããããããã圹ã«ç«ã€ã§ãããïŒ å¥ã®è¡æ¹äžæã®é¢æ°ã«åºäŒã£ããæžããŠãã ãã-ãã§ã«ReactOSã³ãŒãã«ããããWineã«ããå¯èœæ§ãé«ãã§ãã ãŸã USBãã©ã€ããŒã¯ãããŸããã
ããããããŠã³ããŒã
æ°å¹ŽãããŸããŠããã§ãšãããããŸããå®å®ããReactOSïŒ
PS éèŠãªæŽæ°ïŒ 4.0ãŸãã¯4.5ã§ã³ã³ãã€ã«ãããåçŽãªã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ã¯ããã£ã¹ã¯äžã®ãã©ã«ããŒ/ãã¡ã€ã«ãäžèŠ§è¡šç€ºããŠæ£åžžã«åäœããŸãã ãããã£ãŠããã¹ãŠã®CLRã§ã¯ãªããWinFormsãšWPFïŒWinFormsã®äŸã®ããã«ã¶ãäžãã£ãŠããïŒã®ããããããããŸããã
4.5ã®ã€ã³ã¹ããŒã«äžã«ãåŒæ°remove system.Windows.FormsãŸãã¯System.Dynamicãªã©ã®ngen.exeããã»ã¹ã«æ°ä»ããŸããã åé€ãããããã«èŠããããéåžžã¯æ°ããã¢ã»ã³ããªãç»é²ããªãã£ã
PPS SUPERéèŠãªã¢ããããŒãïŒ ããã»ã¹ã®ã€ã³ã¹ããŒã©ãŒ4.5ã¯GACããäžéšã®ã¢ã»ã³ããªãåé€ããŸãããã©ããã§ã¯ã©ãã·ã¥ããæ°ãããã®ãã³ããŒããæéããããŸããïŒ\ Microsoft.NET \ assembly \ GAC_MSILïŒã ãã®çµæã115åã®ã¢ã»ã³ããªã®ãã¡73åãæ®ããã¢ã»ã³ããªSystemãSystem.DrawingãSystem.Windows.FormsãAccessibilityãã³ããŒãããšãåçŽãªWinFormsã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã
PPPSããã¯çŽ æŽãããç¬éã§ããããšãå€æããŸãã-system32ã®4.0ããmscoree.dllãã³ããŒãããšãã€ã³ã¹ããŒã©ãŒ4.5ã¯å®å šã«æ©èœããŸããããã³ã³ãœãŒã«ãåèµ·åãããšwin-formã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã