VB.NET 使用 WebView2 如何默认开启摄像头与麦克风访问权限
WebView2 默认授予麦克风/摄像头权限解决方案
核心实现基于官方提供的CoreWebView2.PermissionRequested事件,该事件会在WebView2加载的页面请求各类权限(包括摄像头、麦克风、通知、地理位置等)时触发,开发者可直接在事件回调中指定权限处理结果,无需用户手动确认。
实现步骤
- 先确保WebView2完成CoreWebView2的初始化,再绑定权限请求事件
- 在事件回调中判断权限类型,麦克风、摄像头类请求直接设置为允许,标记事件已处理即可
代码示例(C#)
绑定事件
// 等待WebView2核心初始化完成 await webView2.EnsureCoreWebView2Async(); // 注册权限请求事件监听 webView2.CoreWebView2.PermissionRequested += PermissionRequestedHandler;
事件处理逻辑
private void PermissionRequestedHandler(object sender, CoreWebView2PermissionRequestedEventArgs e) { // 匹配麦克风、摄像头权限类型 if (e.PermissionKind is CoreWebView2PermissionKind.Microphone or CoreWebView2PermissionKind.Camera) { // 直接允许权限 e.State = CoreWebView2PermissionState.Allow; // 标记事件已处理,拦截系统默认的权限请求弹窗 e.Handled = true; } }
注意事项
- 如需限制仅特定域名可调用设备,可增加域名校验逻辑:
if (e.Uri.StartsWith("https://你的业务域名.com"))再执行放行操作,降低安全风险 - WebView2 SDK版本需高于1.0.1018-prerelease,建议使用1.0.1054.31及以上稳定版本,避免API兼容问题
- 桌面应用本身需要先获取Windows系统层面的麦克风、摄像头访问权限,可进入系统「设置-隐私和安全性」,找到对应应用确认设备权限已开启,否则WebView2内部放行也无法正常调用硬件
内容的提问来源于stack exchange,提问作者Sleiman
相关产品推荐
相关产品推荐

