Windows 11 環境において、1998年製のレガシー開発環境「Visual C++ 6.0(VC6)」をネイティブにインストールし、かつ現代のOS仕様に伴うデバッガのハング・クラッシュ問題を回避してステップ実行(デバッグ動作)を安定させるための手順と、隠された設定変更の備忘録です。
1. Windows 11 へのインストールとOSバージョンの影響
Windows 11 に VS6/VC6 を導入する際の手順は、基本的には Windows 10 時代と同様ですが、OSのビルドバージョン(機能更新プログラム)によってデバッガの挙動が大きく変化します。
■ インストール時の基本方針
- 現代の環境では競合を起こすため、インストーラの設定で「DB(データベース)関係」のコンポーネントはインストール対象から外します。
- 導入後は、必ず Service Pack 6(SP6)を適用します。
■ Windows 11 のバージョンによる動作の違い
- Windows 11 21H2 以前: インストール自体は可能で起動もしますが、デバッガでブレークポイントにヒットした後の挙動が不安定(ハングアップ等)になり、実用的なデバッグが困難な傾向があります。
- Windows 11 22H2 以降: OS内部の互換性レイヤーの調整により、VC6の起動および基本的なビルド・ステップ実行の安定性が大幅に向上します。Windows 11 でVC6を運用する場合は、OSを 22H2 以降の最新状態に更新しておくことが大前提となります。
2. デバッガのステップ実行時に発生するエラーの回避策
Windows 11(22H2以降)のホスト環境、あるいは仮想マシン環境でVC6デバッガを使ってステップ実行を試みると、環境に応じて以下のいずれかの致命的なエラーダイアログが表示され、デバッグが中断される現象に直面します。
■ 発生する代表的なエラーパターン
-
アクセス違反型(主に仮想環境など)
ハンドルされていない例外は [アプリ名].exe (OLE32.DLL) にあります: 0xC0000005: Access Violation -
管理者権限要求型(主にホスト環境など)
OLE リモート呼び出しデバッグには管理者権限が必要です: この機能は使用できません。
これらは現代の Windows の厳格なセキュリティ機構および RPC(リモート手続き呼び出し)の仕様変更に対し、VC6側の古い OLE デバッグ機能が衝突していることが原因です。
【解決手順】「OLE RPC デバッグ」の無効化
VC6側の内部デバッグオプションを変更することで、この衝突を完全に回避できます。ただし、項目がグレーアウトしていてそのままでは変更できないため、以下の特殊な手順を踏む必要があります。
- VC6のメニューから 「ツール」 - 「オプション」 を開きます.
- 「デバッグ」 タブを選択します.
- 設定を変更可能にするため、一度 「ジャスト イン タイム デバッグ」 のチェックを ON にします.
- これによりロックが解除されるため、「OLE RPC デバッグ」 のチェックを OFF(空欄) に変更します.
- 設定適用後、必要に応じて「ジャスト イン タイム デバッグ」のチェックを元の状態に戻します.
この設定を施すことで、OLE32.DLLによるアクセス違反や管理者権限の警告に遮られることなく、Windows 11上でも綺麗にブレークポイントで止まり、F10/F11による正確なステップ実行が可能になります。
3. 現代のストレージ環境(SSD)への適応Tips
Windows 11環境ではシステムドライブが超高速なSSD(NVMe等)になっていることが一般的です。
VC6のビルドによる頻繁なファイル書き込みからSSDの寿命(TBW)を保護するため、プロジェクトの出力ディレクトリ($(OutDir))をHDD側やRAMディスク側へ逃がし、プロジェクトフォルダ内には mklink コマンドで 「シンボリックリンク」 を張って結合させておく運用が、ドライブの負荷軽減とクリーンなビルド環境の維持に非常にお勧めです。
検証の経緯と詳細なエラーログのキャプチャ
Windows 11 21H2から22H2へのアップグレードに伴う挙動変化のタイムラインや、仮想環境(ホストOSとゲストOSの差異)での詳細な動作検証データ、コンポーネントギャラリの制限事項、およびシンボリックリンクを用いたスマートな運用環境の構築手順については、私のブログにて実体験ベースのドキュメントとして詳しく公開しています。
実際に設定画面を確認しながら環境構築を進めたい方、同様のエラーでデバッガが動かず困っている方は、ぜひご参照ください。
詳細記事はこちら: