如何创建ICoreWebView2EnvironmentOptions?调用CoCreateInstance遇REGDB_E_CLASSNOTREG错误
WebView2中ICoreWebView2EnvironmentOptions创建错误解决及问题解答
错误原因
你遇到的REGDB_E_CLASSNOTREG错误,是因为ICoreWebView2EnvironmentOptions并非可直接通过CoCreateInstance实例化的COM类,WebView2 SDK没有将该接口注册为可独立创建的对象,因此无法通过LIBID_WebView2直接创建其实例。
问题解答
不需要自行实现ICoreWebView2EnvironmentOptions接口,WebView2 SDK提供了专门的创建函数CreateCoreWebView2EnvironmentOptions来生成该对象实例。
修正后的代码示例
CComPtr<ICoreWebView2EnvironmentOptions> spOptions; if (!m_strAdditionalBrowserArguments.IsEmpty()) { // 使用WebView2提供的专用函数创建实例,替代CoCreateInstance HRESULT hr = CreateCoreWebView2EnvironmentOptions(&spOptions); if (SUCCEEDED(hr)) { spOptions->put_AdditionalBrowserArguments(m_strAdditionalBrowserArguments.GetString()); } } hr = CreateCoreWebView2EnvironmentWithOptions( !m_strBrowserExecutableFolder.IsEmpty() ? m_strBrowserExecutableFolder.GetString() : nullptr, strDataFolder, spOptions, Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(this, &CWebView2Wnd::OnCreateEnvironmentCompleted).Get() );
补充说明
- 确保项目已正确链接WebView2的库文件(如
WebView2Loader.lib),并包含对应头文件webview2.h。 - 若使用的WebView2 SDK版本较低,需检查是否支持
CreateCoreWebView2EnvironmentOptions函数,建议升级至最新稳定版SDK。
内容的提问来源于stack exchange,提问作者xMRi
相关产品推荐
相关产品推荐

