代码之家  ›  专栏  ›  技术社区  ›  Danny Tuppeny

检测已安装的浏览器,因此process.start(“chrome”)不会出错

  •  4
  • Danny Tuppeny  · 技术社区  · 15 年前

    我试图让用户选择我的应用程序用来启动URL的浏览器。当前它使用默认浏览器,但有些人希望指定其他浏览器。

    我只想在列表中显示已安装的浏览器,并按如下方式启动它们:

    process.start(“chrome”,url);

    问题是,如果没有安装chrome(在路径中),它将失败。

    我如何检查这个调用是否会失败,而不调用它(这样我就可以预先筛选列表,如果它不起作用,就删除chrome)?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Jared Russell    15 年前

    在Windows中,所有已安装的应用程序都具有 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths 注册表项。一种解决方案是迭代这个键中的所有条目,看看它们是否与支持的浏览器的名称匹配。

    一旦获得了每个浏览器的注册表项,就可以获得 Path 每个键的值,并查看可执行文件是否存在于指定的路径中。

    需要注意的一点是,在64位版本的Windows中,32位应用程序列在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths .

        2
  •  1
  •   Daniel Elliott    15 年前

    你可以包装 Process.Start("chrome", url); 它在 try/catch (捕获未安装浏览器时引发的异常)

    仁慈,