WebView2で「Microsoft Edge で、データ ディレクトリに対する読み取りと書き込みができません」と出る

Edgeのユーザーデータフォルダーにアクセスできないとき出る。

標準だとユーザーデータフォルダーは<ブログラム名>.exe.WebView2/EBWebView/
になる。

CoreWebView2Environment()の第2引数でフォルダ指定できるので、別のところにしてみよう

しかしExcelからDLL経由で呼び出すとこの指定が無視される。
環境変数WEBVIEW2_USER_DATA_FOLDERを指定してもダメ。
まいったな。

MFCでやるなら

CreateCoreWebView2Environment()は厳禁。
CreateCoreWebView2EnvironmentWithOptionsでデータ ディレクトリ指定しないとNG

    // データ ディレクトリはドキュメントに固定する 
    CStringA strA;
    CStringW strW;
    char lpszPath[MAX_PATH] = "";
    LPITEMIDLIST pidl;
    if (::SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == NOERROR)
    {
        ::SHGetPathFromIDList(pidl, lpszPath);
        ::CoTaskMemFree(pidl);
    }
    strA = lpszPath;
    strW = strA;

    HRESULT hr = CreateCoreWebView2EnvironmentWithOptions(nullptr, strW.GetBuffer(0), nullptr,
        Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
            this,
            &CWebBrowserEdge::OnCreateEnvironmentCompleted).Get()