1 つのユーザー データ フォルダーで複数のプロファイルをサポートする

WebView2 複数プロファイル API を使用すると、ユーザー プロファイルを作成して操作して、WebView2 コントロールを操作できます。 WebView2 のプロファイルは、概念的には Microsoft Edge のプロファイルと似ています。 複数のプロファイルのサポートにより、WebView2 アプリは 1 つのユーザー データ フォルダーの下に複数のプロファイルを持つことができます。

各プロファイルには、ブラウザー データを保存するための専用プロファイル フォルダーがあり、Cookie、ユーザー設定、キャッシュされたリソースなど、ユーザーごとに個別の閲覧データ ストレージが提供されます。 同じユーザー プロファイルに関連付けられているすべての WebView2 コントロールは、1 つのプロファイル フォルダーを共有します。

前の方法: WebView2 コントロールごとに異なるユーザー データ フォルダーを使用する

以前は、複数プロファイルのサポートがなければ、データの分離を実現するために、WebView2 アプリでは、WebView2 コントロールごとに異なるユーザー データ フォルダーを使用できました。 ただし、この方法では、複数の WebView2 ランタイム インスタンス (ブラウザー プロセスと子プロセスの束を含む) を実行する必要があります。これにより、メモリ、CPU フットプリント、ディスク領域など、より多くのシステム リソースが消費されました。

WebView2 の作成時にプロファイルを指定する

プロファイルを定義する options オブジェクトを作成する

CoreWebView2Environment メソッドはCreateCoreWebView2ControllerOptionsCoreWebView2ControllerOptionsなどのプロファイルProfileNameIsInPrivateModeEnabledに関する特定の情報を提供する options オブジェクト を作成します。 このオブジェクトを使用して、WebView2 コントロール インスタンスを作成するときにターゲット プロファイルを指定します。

プロファイルを使用する WebView2 コントロールを作成する

パラメーターを受け取る各 Create...Controller メソッドは options 、WebView2 コントロールを作成し、指定したプロファイルに関連付けます。 指定したプロファイルが存在しない場合は、新しいプロファイルが作成されます。

WebView2 の作成時にプロファイルを指定する例

public async void CreateWebView2Controller(object sender, RoutedEventArgs e)
{
    var hwnd = new HwndForWV2();
    Window window = new Window();
    window.Content = hwnd;
    window.Show();

    var env = await CoreWebView2Environment.CreateAsync();
    var options = env.CreateCoreWebView2ControllerOptions();
    options.ProfileName = "MyProfile";
    options.IsInPrivateModeEnabled = true;
    var controller = await env.CreateCoreWebView2ControllerAsync(hwnd.Handle, options);

    controller.Bounds = new System.Drawing.Rectangle(0, 0, 800, 600);
    controller.CoreWebView2.Navigate("https://www.bing.com/");
    controller.CoreWebView2.NavigationStarting += CoreWebView_NavigationStarting;
}

プロファイルにアクセスして操作する

プロファイル オブジェクトを取得するには、WebView2 コントロールの プロパティにアクセス Profile します。

プロファイル オブジェクトを取得したら、それを操作できます。 プロファイル情報を取得し、プロファイル全体の設定と操作を行う場合に使用 CoreWebView2Profile します。

プロファイルへのアクセスと操作の例

string profileName = controller.CoreWebView2.Profile.ProfileName;
bool inPrivate = controller.CoreWebView2.Profile.IsInPrivateModeEnabled;

// update window title with profileName
UpdateAppTitle(profileName);

// update window icon
SetAppIcon(inPrivate);

関連項目