检测已安装的浏览器,以便 Process.Start("chrome") 不会出错

2024-01-03

我试图让用户选择我的应用程序用来启动网址的浏览器。目前它使用默认浏览器,但有些人想指定不同的浏览器。

我想仅显示列表中已安装的浏览器,并且我将像这样启动它们:

Process.Start("chrome", url); (更多信息) https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process.start?view=net-5.0

问题是,如果 Chrome 没有安装(并且在路径中),它就会失败。

如何在不调用它的情况下检查此调用是否会失败(这样我可以预先过滤我的列表,如果它不起作用,则删除 chrome)?


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测已安装的浏览器,以便 Process.Start("chrome") 不会出错 的相关文章

  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 使矩阵数字和名称顺序

    我有以下数据 yvar lt c 1 150 replication lt c rep c rep 1 10 rep 2 10 rep 3 10 5 genotypes lt c rep paste G 1 10 sep 15 enviro
  • 如何使用企业库日志记录仅编写消息来调试输出?

    我想使用 EntLib Logging 实现日志记录 并为类别 调试 连接两个 TraceListener 一个会将这些消息写入文件 另一个会将它们输出到系统跟踪输出 与 Debug Write 的方式相同 以便我可以使用 Sysinter
  • 更改现有数据库上的哈希函数

    我正在阅读一些有关密码哈希的内容 我见过 SHA 256 gt MD5 这让我思考应用程序如何处理从一种哈希函数到另一种哈希函数的变化 如果有人实现一个使用 MD5 对其密码进行哈希处理的应用程序 会发生什么情况 然后他们决定 SHA 25
  • 在scala中读取UTF-8格式的xml

    我正在尝试使用以下代码将文件读取为 xml import scala xml object HebrewToEnglishCityTranslator val data XML loadFile cities hebrew utf xml
  • 根据设备屏幕尺寸(hdpi/ldpi/mdpi)调用函数

    在 mdpi 设备上我想调用这个方法 final float scale getResources getDisplayMetrics density double height px 45 scale 0 5 但当应用程序在 hdpi 设
  • 《apyori模块的RelationRecord对象》apriori算法python

    请原谅我的英语不好 我试图识别一组数据中经常出现的属性 以使用 python 的 apyori 包推断出分类 我正在练习 20772 笔交易的数据框 最大的交易是 543 项 数据框 https i stack imgur com a2c9
  • 将分数转换为十六进制

    假设您有一个数字 28 5 您需要将其转换为十六进制 28 是 1C 29 是 1D 但是 28 5 会是什么呢 你甚至可以转换它吗 我问这个是因为我正在用 JavaScript jsyk 制作一个转换器 Use n toString 16
  • 将 php 脚本作为守护进程运行

    我需要运行一个 php 脚本作为守护进程 等待指令并执行操作 cron 作业不会为我做这件事 因为指令到达后需要立即采取行动 我知道由于内存管理问题 PHP 并不是守护进程的最佳选择 但由于各种原因 我在这种情况下必须使用 PHP 我遇到了
  • 在C中逐行读取文件

    Preface 这道题是关于逐行读取文件 并将每一行插入到一个链表中 我已经编写了链表的实现 并测试了insert 手动功能 这有效 我还编写了从文件中读取文本并将其写出的代码 同样 这也有效 好的 这是我的问题 我怎样才能合并这些概念 以
  • Dart:将十进制转换为十六进制

    我一直在寻找一种在 Dart 编程语言中将十进制数转换为十六进制格式的方法 The hex encode方法中的HexCodec例如 类无法转换十进制 1111 其十六进制值为 457 而是给出异常 FormatException 无效字节
  • 我应该在函数中抛出 IllegalArgumentException 吗?

    我正在构建一个包含大量计算的科学软件 当然参数可能有错误的长度等 所以我使用IllegalArgumentException类 因为它似乎是这个问题的正确名称 但我应该把throws IllegalArgumentException在函数定
  • 如何使用 python 中的循环创建多个目录?

    我想用循环创建 10 个目录 我尝试了以下代码 import os pathname 1 directory C Directory Path Name str pathname while pathname lt 11 if not os
  • 右移和有符号整数

    在我的编译器上 以下伪代码 值替换为二进制 sint32 word 10000000 00000000 00000000 00000000 word gt gt 16 产生一个word位字段如下所示 11111111 11111111 10
  • 在tomcat中共享文件夹

    如何使用 tomcat 6 浏览器访问文件夹 我想我需要向 web xml 添加上下文 我想 所以当我导航到http localhost 8080 myfiles http localhost 8080 myfiles我希望看到 c tem
  • 如何在 Windows 上以提升的权限运行脚本?

    我一直在试图弄清楚如何运行一堆都需要提升权限的应用程序 DameWare MSC exe PowerShell exe 和 SCCM Manager Console 等应用程序都在我的日常工作中使用 我现在运行的是Win7 计划最终迁移到W
  • Wp7 键盘支持多少种语言以及如何设置

    我希望为 Windows Phone 7 创建一个翻译应用程序 我不知道如何去做 这里是问题 我想知道当我在文本框中输入文本进行翻译时 我该怎么做 1 假设 我的Windows手机是中文的 如何将其更改为其他语言 例如法语 德语 俄语等 我
  • C 语言的限制输出

    在 C 中 我想将字符串限制为前 8 个字符 例如 我有 char out printf c str 我怎样才能使它只返回前 8 个字符 您可以通过设置格式说明符中的精度来限制长度 printf 8s str 这将打印up to指向的以空字
  • Maven Cobertura 插件未生成coverage.xml

    我试图生成一个coverage xml 以便我可以在Hudson 的Cobertura 插件中引用它 但该文件没有被创建 我已将以下内容添加到我的 POM 中
  • 如何在.net core中使用反射通过名称查找类的名称空间?

    我有一个仅包含类名称的字符串列表 我需要使用 Activator 创建它们的实例 但它们都可以位于不同的命名空间中 类将来可以移动到另一个名称空间中 因此我无法对其进行硬编码 如果您知道永远不会有多个具有相同名称的类型驻留在不同的命名空间中
  • 检测已安装的浏览器,以便 Process.Start("chrome") 不会出错

    我试图让用户选择我的应用程序用来启动网址的浏览器 目前它使用默认浏览器 但有些人想指定不同的浏览器 我想仅显示列表中已安装的浏览器 并且我将像这样启动它们 Process Start chrome url 更多信息 https learn