WebView2 応用テクニック

WebView2ランタイムがインストールされているかチェック&ブラウザバージョンの取得

WebView2ランタイムがインストールされている場合、レジストリにバージョン情報が書き込まれていますので、 値の有無をチェックすることでインストール状況確認とブラウザバージョンの取得が行えます。

レジストリの以下の場所をチェックします。

//64ビットWindowsの場合
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}

//32ビットWindowsの場合
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}

キーが見つかればその中の「pv」値にバージョン番号が入っています。

バージョン番号はCoreWebView2.Environment.BrowserVersionStringでも取得できます。

サンプル

						Public Class BrowserVersion
						
							Private Sub BrowserVersion_Load(sender As Object, e As EventArgs) Handles MyBase.Load
								CheckWebView2Runtime()
								InitializeAsync()
							End Sub
						
							Private Async Sub InitializeAsync()
								Await webView2.EnsureCoreWebView2Async(Nothing)
							End Sub
						
							Private Sub CheckWebView2Runtime()
						
								Using key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}")
						
									If key Is Nothing OrElse key.GetValue("pv") Is Nothing Then
										MsgBox("no runtime")
									Else
										MsgBox(key.GetValue("pv").ToString())
									End If
						
								End Using
						
							End Sub
						
							Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
						
								MsgBox(webView2.CoreWebView2.Environment.BrowserVersionString)
						
							End Sub

						End Class
					
						public partial class BrowserVersion : Form
						{
							public BrowserVersion()
							{
								InitializeComponent();
							}
					
							private void BrowserVersion_Load(object sender, EventArgs e)
							{
								CheckWebView2Runtime();
								InitializeAsync();
							}
					
							async void InitializeAsync()
							{
								await webView2.EnsureCoreWebView2Async(null);
							}
					
							public void CheckWebView2Runtime()
							{
								using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"))
								{
									if(key == null || key.GetValue("pv") == null)
										MessageBox.Show("no runtime");
									else
										MessageBox.Show(key.GetValue("pv").ToString());
								}
							}
					
							private void button1_Click(object sender, EventArgs e)
							{
								MessageBox.Show(webView2.CoreWebView2.Environment.BrowserVersionString);   
							}
						}	
					

参考