Windows 2000 拡張カーネルv2.6リリースとその説明
Windows 2000 Kernel32 改造計画【BM】
v2.6リリースしました。
今回は、セキュリティアップデートとkernel32.dllへの
GetProcessPreferredUILanguages
SetProcessPreferredUILanguages
の追加だけですが、ちょっと注意点があります。
オプションメニューに関数の無効化を実装しました。
これは、Vista系の関数が実装されていると一部のXP向けアプリが動かないため、強制的に無効にする機能です
QueryFullProcessImagename を無効にすると
QueryFullProcessImagenameA
QueryFullProcessImagenameW
が無効になります
StringEx系を無効にすると
LCMapStringEx:
GetLocaleInfoEx:
CompareStringEx:
GetTimeFormatEx:
GetDateFormatEx:
GetNLSVersionEx:
IsValidLocaleName:
EnumSystemLocalesEx
FindNLSString:
LocaleNameToLCID:
が無効になります
ApplicationRecovery系を無効にすると
RegisterApplicationRecoveryCallback
ApplicationRecoveryInProgress
RegisterApplicationRestart
ApplicationRecoveryFinished
が無効になります
PreferredUILanguagesを無効にすると
GetThreadPreferredUILanguages
SetThreadPreferredUILanguages
GetProcessPreferredUILanguages
SetProcessPreferredUILanguages
が無効になります
一部の環境で、PreferredUILanguagesやStringEx系を無効にすると
BSoDになるという報告があります。
ご注意ください。
通常は「無効にしなくてよい」と判断すればいいですか?
QueryFullProcessImages については無効にしないとPaperManなどが動作しないことを確認しています
v2.6のリンクが見当たらないのですが…
キャッシュクリアしてもだめでした
いつもお世話になってます。
手元の i855pmチップセットのノート(IBM TP41P)でv2.6インストール後に BSoD に遭遇したので条件を絞ろうとしていたのですが、疑問点が生じたため質問に来ました。
・現在判っている BSoD の発生条件:
v2.6で NT5系列で 5.81系列選択時に QueryFullProcessImagenameを無効にした時。Windows 再起動中起動ロゴの後デスクトップの背景が出る前に stop – unknown hard error で BSoD。セーフモードでも同じタイミングで同じエラーになります。このときの kernel32.dll は version 5.0.2195.7236(チェックサム 0x000AC654)でした。v2.6Gでは問題有りませんでした。
・疑問点:この kernel32.dll のチェックサムなのですが、関数が全部有効(チェックボックスのチェック無し)の場合と StringEx系のみ無効の場合と PreferredUILanguages系のみ無効の場合との3パターンが同じ数値(v2.6が0x000AB846、v2.6Gが0x000A8AB7)となりました。(NT5系列で5.81系列選択時 version はみな 5.0.2195.7236 )
関数が違う以上チェックサムも違うのが本来ではないかと思い、こちらのインストール失敗の可能性などアドバイスを戴きたく思っています。
まだNT6系列などは(気力が尽きて)チェックしていませんがチェックサムが同じになっても良いのか良くないのか教えて戴ければ幸いです。
厳密な確認はしていないですが、特定の関数の中の文字列を _ に置き換えるという処理なので、置き換える文字の数が一致してしまうとチェックサムが同じになる可能性は十分にあります。
後ほど精査してみます。