在 WPF 中打开 WebView2 会导致 System.UnauthorizedAccessException 调用EnsureCoreWebView2Async 时

问题描述

从 COM Office 插件打开带有 WebView2 组件的 WPF 窗口时,在调用 EnsureCoreWebView2Async(null) 期间发生以下错误。 Office 应用程序窗口被设置为新 WPF 窗口的所有者。

System.UnauthorizedAccessException: '拒绝访问(异常 HRESULT: 0x80070005(E_ACCESSDENIED))'

有趣的是,当从纯 WPF 应用程序调用一个窗口时,窗口和 webview2 完美地工作。同样没有 WebView2 组件,窗口也能工作。

解决方法

这个问题显然与 webview 试图在错误的位置创建文件(例如缓存)有关,很可能是应用程序文件夹。在 CoreWebView2CreationProperties 中,可以调整此行为并指定不同的文件夹。

在 WPF XAML 中使用的示例:

 <wv2:WebView2>
     <wv2:WebView2.CreationProperties>
         <wv2:CoreWebView2CreationProperties UserDataFolder="C:\Temp\myfolder"/>
     </wv2:WebView2.CreationProperties>
 </wv2:WebView2>