C# 在win10/win11调用默认浏览器打开网页

这篇具有很好参考价值的文章主要介绍了C# 在win10/win11调用默认浏览器打开网页。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对于使用C#调用默认浏览器打开网页这个话题,网上资源一般都用的是Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\");或者System.Diagnostics.Process.Start("explorer.exe", "...")之类,但在实践过程中发现前者在Windows 10之后修改默认浏览器并不会修改注册表的这一字节而导致只会调用Microsoft Edge,后者更是有概率直接失效,所以需要换个办法。

思路是:

1、在新的注册表字段HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\URLAssociations\(http|https)\UserChoice读取到默认浏览器,字段值一般为ChromeHTML,MSEdgeHTM之类。

2、通过读取到的默认浏览器字段去HKEY_CLASSES_ROOT\...\shell\open\command获取浏览器path。

3、在此期间出错或是读取到null时使用旧方法,以兼容旧操作系统。

代码如下:

private static void OuterVisit(string url)
{
	dynamic? kstr;
	string s;
	try
	{
		// 从注册表中读取默认浏览器可执行文件路径
		RegistryKey? key2 = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\");
        RegistryKey? key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice\");
        if (key != null)
		{
			kstr = key.GetValue("ProgId");
			if (kstr != null)
			{
				s = kstr.ToString();
				// "ChromeHTML","MSEdgeHTM" etc.
				if (Registry.GetValue(@"HKEY_CLASSES_ROOT\" + s + @"\shell\open\command", null, null) is string path)
				{
					var split = path.Split('"');
					path = split.Length >= 2 ? split[1] : "";
					if (path != "")
					{
						Process.Start(path, url);
						return;
                    }
                }
             }
		}
		if (key2 != null)
        {
			kstr = key2.GetValue("");
			if (kstr != null)
			{
				s = kstr.ToString();
				var lastIndex = s.IndexOf(".exe", StringComparison.Ordinal);
				if (lastIndex == -1)
				{
					lastIndex = s.IndexOf(".EXE", StringComparison.Ordinal);
				}
				var path = s.Substring(1, lastIndex + 3);
				var result1 = Process.Start(path, url);
				if (result1 == null)
				{
					var result2 = Process.Start("explorer.exe", url);
					if (result2 == null)
					{
						Process.Start(url);
					}
				}
			}
		}
		else
		{
			var result2 = Process.Start("explorer.exe", url);
			if (result2 == null)
			{
				Process.Start(url);
			}
		}
	}
	catch
	{
		CommonTools.ShowMsgBox("调用浏览器失败。链接已经被复制到您的剪贴板,请手动操作。");
		Clipboard.SetText(url);
    }
}

引用:

1、如何获取chrome.exe路径(c#) - 爱码网 (likecs.com)

2、C#打开系统浏览器(默认浏览器,谷歌,火狐等…可以自行扩展)_Lingbug的博客-CSDN博客_c# 打开浏览器

3、如何通过Windows 10上的注册表查找默认浏览器文章来源地址https://www.toymoban.com/news/detail-549422.html

到了这里,关于C# 在win10/win11调用默认浏览器打开网页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • win10系统打开IE浏览器后会自动跳转到Edge。

    解决win10系统打开IE浏览器后会自动跳转到Edge浏览器。win10系统自动升级后无法打开IE,打开也是自动跳转到系统自带的Edge浏览器,但有些业务系统只能用IE,下面就教大家怎么解决这个问题。(win11用同样方法也可以解决) 打开win10的控制面板, 打开网络和lnterent  打开lnte

    2024年02月11日
    浏览(51)
  • Win10常见问题【Office等、微信能接受消息但是无法打开浏览器】

    方案1:重启Windows资源管理器 ctrl + shift + esc打开资源管理器 文件 - 运行新任务 打开运行窗口后,直接输入 方案2:删除注册表错误位置 按Win+R键调出运行,输入regedit后按回车键进入注册表编辑器 定位到 在{00000000-0000-0000-0000-000000000000}上单击右键,选择“删除”; 如果是64位

    2024年01月24日
    浏览(51)
  • 在Win10系统中使用独立浏览器 Internet Explorer 11 的解决方案()

    一、前言:     本次修订优化了注册表,添加了搜索引擎,增加了搜索引擎的图标显示,并升级了Flash插件,使 IE11 更加适合作为独立浏览器使用。     2022年6月15日,微软终止了对IE浏览器的服务支持,然后将IE的部分功能集成到Edge浏览器的IE模式,并试图限制IE作为独立浏

    2024年02月12日
    浏览(63)
  • win10进行安装使用11ie浏览器——遇到问题合集解决(执行一遍、问题解决)

    因为需要访问的页面,只能兼容使用对应的ie进行访问,所以才开始安装并使用ie。再次总结自己踩的坑。 切记注意 操作完 一下步骤 请重启电脑 首先使用ie的前提就是需要确保自己的电脑上是有ie的 检验方式之一 之间进行——“开始”——进行搜索。 或者检验这个地方 打

    2024年02月04日
    浏览(70)
  • WebStorm修改默认打开的浏览器

    有两种方式第一种修改系统默认浏览器 我采用的是下面这种,在webstorm中修改 将浏览器设置为默认的浏览器即可

    2024年02月12日
    浏览(51)
  • VSCode如何设置默认浏览器打开

    方法一: 1.首先需要安装open in browser插件:在VSCode扩展里面搜索“open in browser”,找到并下载。(如图一) 2.点击:文件—首选项—设置(如图二) 3.以Google Chrome为例:在搜素栏输入“open in browser”,根据图示输入“Google Chrome”即可更改打开的默认浏览器为“Google Chrome”。

    2024年02月12日
    浏览(56)
  • 谷歌浏览器打开默认变成360导航

    一、Chrome浏览器的地址栏输入:“Chrome://version”,查看如图,在命令行的最后就有被篡改的网址。 二、处理方案: 1、找到chrome浏览器的快捷图标(我的目录:C:Users****AppDataRoamingMicrosoftWindowsStart MenuPrograms),右键属性,把目标栏后面\\\"https://hao.360.com/?a1004\\\"这些去掉; 2、

    2024年02月13日
    浏览(140)
  • Win10 IE11浏览器,您正在查看的页使用 Java,Microsoft 网站提供有关 Java 支持的更多信息 解决

    最近工作需要支持下IE11浏览器,使用java applet控件。 以前IE10及以下版本都比较正常,但是IE11会出现一些比较奇怪的现象。 记录下解决的方法和过程,便于有需要的同学自取。 1.首先是报错,如下图所示;这个网上搜索了较多的资料,分析下来核心的原因是浏览器未启用ja

    2024年02月09日
    浏览(85)
  • 解决:VS Code 设置默认打开浏览器 Chrome

    在 VSCode 编辑器中,一般默认打开的浏览器是 Edge 浏览器,而我一般使用 Chrome 浏览器,以及会遇到页面的调试等不同的问题,因此需要将 VSCode 的默认浏览器调整为 Chrome 浏览器; 1.在插件商城中搜索open in browser并安装 2.打开 文件==》首选项==》设置 在搜索栏中搜索Open-in-br

    2024年02月11日
    浏览(72)
  • Microsoft Edge浏览器打开默认是2345,怎么修改

    1、选中Microsoft Edge,点击鼠标右键 2、选择使用Microsoft Defender 扫描 3、转入Windows 安全中心后,选择Microsoft Defender 脱机版扫描 4、立即扫描 5、电脑会进行重启,重启后浏览器就恢复了。

    2024年02月15日
    浏览(103)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包