Edgeのユーザーデータフォルダーにアクセスできないとき出る。
標準だとユーザーデータフォルダーは<ブログラム名>.exe.WebView2/EBWebView/
になる。
CoreWebView2Environment()の第2引数でフォルダ指定できるので、別のところにしてみよう
しかしExcelからDLL経由で呼び出すとこの指定が無視される。
環境変数WEBVIEW2_USER_DATA_FOLDERを指定してもダメ。
まいったな。
ネタ元
- https://stackoverflow.com/questions/62470733/set-cache-directory-for-webview2
- https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/concepts/userdatafolder
- http://docwiki.embarcadero.com/Support/ja/WebView2_SDK%E3%81%8C%E5%B1%95%E9%96%8B%E3%81%99%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%91%E3%82%B9%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%3F
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()