Visual Studio 2012 でコンパイルしたアプリをWindows 2000で動かす!
Windows 2000 Kernel32 改造計画【BM】
バージョン v2.2の英語版と日本語公開しました。
今回は、 Visual Studio 2012 (VC++2012)で作ったアプリを動かす実験です
サンプルはこれ。
WIn32 アプリと MFCアプリの2本を /MT /MTd でコンパイルしたプログラムです。
(つまり、ランタイムを使わないアプリケーション)
まず、Win32アプリは少しの関数の実装で行けました。
MFC32 アプリはかなりてこずりましたが、何とか起動できるようになりました・ω・
実装した関数は以下の通り
User32
ChangeWindowMessageFilter (Vista)
IsThreadDesktopComposited (Vista)
SetProcessDPIAware (Vista)
DwmHintDxUpdate (Vista)
ADVAPI32
RegGetValueW(2003)
NTDLL
RtlRunOnceBeginInitialize(Vista)
RtlRunOnceComplete(Vista)
RtlRunOnceExecuteOnce(Vista)
uxtheme
BeginBufferedAnimation(Vista)
BeginBufferedPaint(Vista)
EndBufferedAnimation(Vista)
EndBufferedPaint(Vista)
BufferedPaintInit(Vista)
BufferedPaintUnInit(Vista)
DrawThemeTextEx(Vista)
imm32
ImmDisableTextFrameService(XP)
shell32
SHCreateItemFromIDList(Vista)
SHCreateItemFromParsingName(Vista)
SHGetKnownFolderPath(Vista)
InitNetworkAddressControl(Vista)
kernel32
GetTickCount64(Vista)
LCMapStringEx(Vista)
InitOnceExecuteOnce(Vista)
RegisterApplicationRecoveryCallback(Vista)
ApplicationRecoveryInProgress(Vista)
RegisterApplicationRestart(Vista)
ApplicationRecoveryFinished(Vista)
GetLocaleInfoEx(Vista)
CompareStringEx(Vista)
GetNLSVersion(2003)
GetNLSVersionEx(Vista)
GetTimeFormatEx(Vista)
GetDateFormatEx(Vista)
IsValidLocaleName(Vista)
EnumSystemLocalesEx(Vista)
CreateSemaphoreExW(Vista)
CreateSemaphoreExA(Vista)
GetThreadPreferredUILanguages(Vista)
SetThreadPreferredUILanguages(Vista)
まぁ、実装したといっても、ダミー関数が殆どですが・ω・;意外と動くものですね
ランタイム別バージョンはちょっときつそうです。
msvcr110
FlushProcessWriteBuffers
GetNumaHighestNodeNumber
GetLogicalProcessorInformation
GetCurrentProcessorNumber
CreateThreadpoolWait
SetThreadpoolWait
CloseThreadpoolTimer
WaitForThreadpoolTimerCallbacks
CloseThreadpoolWait
SetThreadpoolTimer
FreeLibraryWhenCallbackReturns
CreateThreadpoolTimer
GetUserDefaultLocaleName
msvcr110_clr400
FlushProcessWriteBuffers
GetNumaHighestNodeNumber
GetCurrentProcessorNumber
GetLogicalProcessorInformation
GetUserDefaultLocaleName
mfcm110/u, mfc110/u (msvcr110に依存)
msvcp110/msvcp110_clr0400 (msvcr110に依存)
CreateSymbolicLinkW
vcamp110.dll (DX11、msvcr110依存)
K32GetPerformanceInfo
InitOnceInitialize
EventUnregister
EventWrite
EventRegister
vcomp110/atl110 利用可能
vccorlib110.dll (WinRT用)
api-ms-win-core-winrt-l1-1-0.dll などを使っている・・・Win8専用?
Comments