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}
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);
}
}
