本サイトは分析、カスタマイズされたコンテンツ、および広告に Cookie を使用します。 また、アフィリエイト広告などプロモーション広告を利用しています。 引き続き閲覧すると、Cookie の使用に同意するものと見なされます。
Hi, Developers,
straightapps.com ロゴ
作成 June 17, 2025
トップページ > Windows トップ > WebView2 ランタイムの存在を調べる
line
Windows 開発
line

ここでは、WebView2 ランタイムの存在を調べる方法について、書いています。

Natural Intelligence による記事要点まとめ
・WebView2 を利用するとアプリにブラウザを埋め込める。
・WebView2 のバージョンはレジストリに記録されている。
・バージョン情報のキーは 32/64 ビット版で異なる。

Visual C++ でコーディングされたプログラムでウェブ関係の処理を行いたく調べてみると、 Android などと同様に、Windows にも WebView コントロールが存在するようです。

WebView は古いブラウザ Internet Explorer を利用するものとなっており、 今は Microsoft のブラウザは Edge が標準ですので WebView2 という名前になっているようです。

ここではまず、WebView2 を利用する前に、WebView2 ランタイムがすでにシステムに存在するかを確認します。

Windows 10 ではバージョンや、Office 365 などの何らかのプログラムと共にランタイムがインストールされている場合があるようです。 Windows 11 では標準でランタイムがインストールされているらしいです。

ちなみに WebView2 にはバージョン固定で利用できるものと、常に最新にアップデートされる エバーグリーン版 ( いつまでも緑、つまりずっと現役という意味合いでしょう。 ) があるようですが、ここではその違いは気にしていません。 あるかないか、それだけです。

WebView2 がシステムにあるかどうかの判断は、レジストリにバージョン番号が書かれているかどうかで判断できるようです。

レジストリの位置が 32 ビット版 Windows と 64 ビット版 Windows で異なるということですが、 今はほぼ 64 ビット版 Windows と考えてよいかと思います。 わざわざ 32 ビット版を利用している場合は、32 ビット版であることを理解して使っているのではないでしょうか。

とはいえ、一応確認すべきですから、稼働している Windows が何ビット版であるかを確認します。

▼ セクション一覧

Windows のビット数を判断する
バージョン番号を取得する

なお、本サイトのご利用に際しては、必ずプライバシーポリシー(免責事項等)をご参照ください。


Windows のビット数を判断する

投稿 June 17, 2025

実行しているプログラム自身が 32 ビット版 Windows で実行されているか、64 ビット版 Windows で実行されているかを調べる関数 IsOSx64 を定義します。 ちなみに 64 ビット版を x64、32 ビット版を x86 と呼んでいます。

#include <windows.h>

bool IsOSx64(void)
{
	BOOL bRet = FALSE;

	IsWow64Process(GetCurrentProcess(), &bRet);
	if (bRet) {
		return true;
	}

まずは IsWow64Process 関数 で、 WOW64 で実行されているかどうかを調べます。 WOW64 とは、64 ビット版 Windows 上で 32 ビットアプリを動作させる仕組みです。

32 ビットアプリは 64 ビット版 Windows でも動作します。 64 ビットアプリは 32 ビット版 Windows では動作しません(起動できません)。 ですので、このチェック関数は 32 ビットアプリでのみ利用価値があります。 64 ビットアプリであるなら、 64 ビット版 Windows 上で動作しています。 ( 将来 128 ビット版に移行していくならば話は違ってくるかもしれません。 )

IsWow64Process 関数 は第 2 引数で TRUE または FALSE を返します。 TRUE が返されたら WOW64 で動作している、ということです。

32 ビットアプリ + 64 ビット版 Windows の場合、WOW64 で動作していますから TRUE が返ります。 実は TRUE が返るのはこのケースだけですので、この場合は「64 ビット版 Windows で動作中」で確定です。

64 ビットアプリ + 64 ビット版 Windows の場合、WOW64 での動作ではありませんから FALSE が返ります。 そもそも 64 ビットアプリとして動作している時点で 32 ビット版 Windows ではありません。

32 ビットアプリ + 32 ビット版 Windows の可能性もあります。 この場合は WOW64 で動作しているわけではないので FALSE が返ります。

64 ビットアプリ + 32 ビット版 Windows の場合はそもそもこの exe を起動できませんから、除外です。

ここまで、実行ファイル自身が 32 ビットアプリか 64 ビットアプリかで決定可能ですが、 コードとしてどちらであっても判断するには、次のようにすると良いようです。

	SYSTEM_INFO si;
	GetNativeSystemInfo(&si);

	switch (si.wProcessorArchitecture) {

	case PROCESSOR_ARCHITECTURE_AMD64:
		return true; // 64 ビット

	case PROCESSOR_ARCHITECTURE_ARM:
	//case PROCESSOR_ARCHITECTURE_ARM64:
	case PROCESSOR_ARCHITECTURE_IA64:
		break;

	case PROCESSOR_ARCHITECTURE_INTEL:
		break;

	case PROCESSOR_ARCHITECTURE_UNKNOWN: // 不明
	default:
		break;
	}
	return false; // 32 ビット判定
}

GetNativeSystemInfo 関数 は、「現在のシステムに関する情報を取得する」関数なのですが、条件によって異なる目的に使うようです。 ちなみにビルドが通らない場合、 _WIN32_WINNT を 0x0501 以降に設定する必要あります。 ご注意ください。

この時点で「WOW64 で実行されているアプリケーション」ではないことがわかっています。

目的は、64 ビットアプリが 64 ビット版 Windows で動作しているか、32 ビットアプリが 32 ビット版 Windows で動作しているかの区別です。

関数呼び出しにより返されるのは SYSTEM_INFO 構造体 です。

複数の PC でテストできるわけではないのですが、 インストールされているオペレーティング システムのプロセッサ アーキテクチャを表す wProcessorArchitecture メンバを参照すると良さそうでした。

これが PROCESSOR_ARCHITECTURE_AMD64 であれば、 AMD でも Intel でも、64 ビットプロセッサ―で動作しているということです。 試せる範囲内ではこのとき 64 ビット版 Windows と考えて良さそうですが、 わざと 32 ビット版 Windows を利用しているケースを除外(検出)できない気もします。

ARM 系の CPU や Intel Itanium ベースの場合は判断しにくく除外しています。

PROCESSOR_ARCHITECTURE_INTEL であれば x86 系、すなわち 32 ビット CPU です。 64 ビット版 Windows は動作しませんので、32 ビット版 Windows で確定です。

不完全感も残りますが、実用上は十分ではないかと思います。

試していないのですが、実行している自分の exe を読み取りモードでアクセスできれば、 自分が 32 ビットアプリか 64 ビットアプリかがわかりますので完璧です。

アイコン 32/64 ビット EXE/DLL チェッカー
実行ファイル exe やライブラリファイル dll が 32 ビットなのか、64 ビットなのかを判断する方法について書いています。 特に DLL は、ビット数の異なるアプリからは呼び出せませんので、注意が必要です。



▲ページ先頭へ

バージョン番号を取得する

投稿 June 17, 2025

では、WebView2 のバージョン番号を取得しましょう。

64 ビット版 Windows の場合、 レジストリの HKEY_LOCAL_MACHINE キーの中の SOFTWARE\\WOW6432Node\\Microsoft\\EdgeUpdate\\Clients\\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5} にある pv キー(REG_SZ = 文字列)にバージョン番号が書かれているということです。

WebView2 ランタイムがなければ pv キーは存在せず、pv キーがあっても空欄ならインストールされていない、と判断できるようです。 Windows 10 Pro で試したところ、137.0.3296.83 と表示されました。

32 ビット版 Windows の場合、 同 HKEY_LOCAL_MACHINE キーの中の SOFTWARE\\Microsoft\\EdgeUpdate\\Clients\\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5} にある pv キー(REG_SZ = 文字列)にバージョン番号が書かれているということです。

試せませんが、そうだということです。




と方法を記録しましたが、それが意味があるのかどうかはわかりません。 どうやらシステムにインストールされていてもいなくても、ランライム配布パッケージを用意するほうが良いようです。

まあ、せっかく固定バージョンで使っていたのにあるソフトにより更新されちゃった、とか、 エバーグリーン版だったのに無理やり固定にされた、とか、そういうのは回避できるのかもしれません。

なお、WebView2 ランタイムがインストールされていても、WebView2 を利用した開発には SDK が別途必要ということですから、 SDK についても調査していきます。

▲ページ先頭へ

Amazon 広告 ▼
Visual C++ 2022 パーフェクトマスター (Perfect Master 188)
かんたん Visual C++[改訂 3 版] (プログラミングの教科書)


line
関連トピックス
line

_sprintf でリンクエラーを回避する

古い Visual C++ プロジェクトから新しい環境に移行したとき、_sprintf でエラーが出る場合の回避方法について、書いています。

リストボックスの文字サイズやフォントを変える

Visual C++ では、リストボックスの文字サイズをプロパティで変更することはできません。 ここでは自由な文字サイズに変更したり、別のフォントにしたりしています。

マルチモニタを制御

Windows PC で 2 台のモニタを接続している場合、2 台接続を検出し、座標を特定するためのコードについて書いています。

VS Community 2022 をインストールする

すでにインストールされている VS 2019 をアンインストールし、VS Community 2022 をインストールしなおしています。

line
その他のおすすめ
line

Android 開発トップ

Android 開発関連の情報を、書いています。

Windows 開発トップ

Windows 開発関連の情報を、書いています。



© 2017-2025 StraightApps.com 無断転載を禁じます。No reproduction without permission.