You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置DotNetBrowser 1.21.5.0允许调用本地存储的EXE文件

DotNetBrowser 1.21.5.0 调用本地EXE问题解决方案

根因说明

DotNetBrowser 1.x系列默认拦截非http/https的自定义协议请求,以及file://协议指向的本地可执行文件启动逻辑,导致和Chrome默认行为不一致,出现调用失败的问题。

适配方案

1. 自定义协议调用场景适配

如果调用本地EXE的链接是已在系统注册的自定义协议(格式如custom://xxxx),可通过重写LoadHandler的OnBeforeLoad事件拦截请求并放行:

// Browser控件初始化完成后注册自定义LoadHandler
browser.LoadHandler = new CustomLoadHandler();

public class CustomLoadHandler : DefaultLoadHandler
{
    protected override bool OnBeforeLoad(LoadParams loadParams)
    {
        var requestUrl = loadParams.Url;
        // 替换为你业务实际用到的自定义协议前缀
        if (requestUrl.StartsWith("your-custom-protocol://", StringComparison.OrdinalIgnoreCase))
        {
            // 调用系统默认程序处理该协议请求
            System.Diagnostics.Process.Start(requestUrl);
            // 中断DotNetBrowser默认加载逻辑
            return true;
        }
        return base.OnBeforeLoad(loadParams);
    }
}

2. 本地EXE的file协议链接适配

如果页面通过<a href="file:///C:/path/xxx.exe">形式直接指向本地EXE,可添加对应判断逻辑:

protected override bool OnBeforeLoad(LoadParams loadParams)
{
    var requestUrl = loadParams.Url;
    if (requestUrl.StartsWith("file://") && requestUrl.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
    {
        // 转换file协议路径为本地物理路径
        string localExePath = new Uri(requestUrl).LocalPath;
        if (System.IO.File.Exists(localExePath))
        {
            System.Diagnostics.Process.Start(localExePath);
            return true;
        }
    }
    // 可保留之前的自定义协议判断逻辑
    return base.OnBeforeLoad(loadParams);
}

3. 全局权限配置补充

如果以上逻辑仍被拦截,可在Browser初始化时添加权限配置:

var browserPrefs = new BrowserPreferences
{
    // 允许file协议访问本地文件
    AllowFileAccessFromFiles = true
};
// 添加业务用到的自定义协议到白名单
browserPrefs.AllowedSchemes.Add("your-custom-protocol");
// 用配置初始化Browser实例
Browser browser = BrowserFactory.Create(browserPrefs);

注意事项

  • 建议仅放行业务所需的特定协议/本地路径,避免全局放行带来的安全风险
  • 若启动的EXE需要管理员权限,需确保当前C#主程序拥有对应权限,否则Process.Start会触发权限异常
  • DotNetBrowser 1.21.5.0不兼容2.x及以上版本的ProtocolHandler系列API,上述方案为该版本适配的原生实现

内容的提问来源于stack exchange,提问作者Richard Rahl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:09:00