Windows 10 使用C#如何将IE设置为默认浏览器
在WPF XBAP项目中遇到这样一个问题,程序在Windows 10上面无法运行。原因是因为Windows 10默认浏览器是Edge,而XBAP程序是需要在IE上面运行的。于是开始想办法修改Windows 10的默认浏览器。在Windows 10之前,只需要修改注册表的就可以了。将下面注册表的ProgId设置为IE.HTTP/IE.HTTPS即可。
HKEY_CURRENT_USER\ Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice
HKEY_CURRENT_USER\ Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice
Code:
class Program
{
private const string HTTP_KEY = @"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice"; private const string HTTPS_KEY = @"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice"; static void Main(string[] args)
{
Console.WriteLine("Change default browser to IE"); KeyChange(HTTP_KEY, false); KeyChange(HTTPS_KEY, true); Console.WriteLine("Changed successfully."); Console.ReadKey();
} private static void KeyChange(string key, bool https = false)
{
using (RegistryKey subKey = Registry.CurrentUser.OpenSubKey(key,true))
{
if (subKey != null &&
subKey.GetValue("ProgId") != null)
{
if (https)
{
if (subKey.GetValue("ProgId").ToString().ToUpper() != "IE.HTTPS")
{
subKey.SetValue("ProgId", "IE.HTTPS");
}
}
else
{
if (subKey.GetValue("ProgId").ToString().ToUpper() != "IE.HTTP")
{
subKey.SetValue("ProgId", "IE.HTTP");
}
}
}
}
}
}
执行完成后,Windows 10会在右下角提示:
经过调查分析,这是因为从Windows 10开始,修改ProgId的同时还需要修改Hash值,
如果我们通过手动的方式来修改Windows 10默认浏览器时会发现这个Hash值每次修改都会改变,而且不一样。猜测这是因为微软不希望有第三方程序来修改默认浏览器吧。通过注册表来修改默认浏览器的方式看来行不通了。
因为我们可以手动通过 控制面板 --> 默认程序 --> 选择IE浏览器 -->设置IE为默认浏览器来修改。这就提供了另外一个解决方案,通过录制一些脚本来执行。对Visual Studio Coded UI有一丁点儿的了解,于是我先使用Coded UI录制了修改默认浏览器的脚本。关于Coded UI的更多内容,请参考MSDN官网,
https://msdn.microsoft.com/en-us/library/dd286726.aspx#VerifyingCodeUsingCUITCreate
脚本点击这里下载,需要注意的是,需要使用Visual Studio 2015 Enterprise版本才能打开/运行Coded UI脚本。
下面我们就需要通过C#程序来承载这个测试脚本。要使脚本能够在客户机器上运行,我们需要添加一些Coded UI的Assembly,
1. 将下面DLL拷贝到 C:\Program Files (x86)\Common Files\Microsoft Shared\VSTT\14.0(32位地址:C:\Program Files\Common Files\Microsoft Shared\VSTT\14.0)
2. 注册C:\Program Files (x86)\Common Files\Microsoft Shared\VSTT\14.0\Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.dll
private static void RegisterDll(string path)
{
try
{
//'/s' : Specifies regsvr32 to run silently and to not display any message boxes. string args = "/s" + " " + "\"" + path + "\""; Process process = new Process(); //This file registers .dll files as command components in the registry.
process.StartInfo.FileName = "regsvr32.exe"; process.StartInfo.Arguments = args; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; process.StartInfo.RedirectStandardOutput = true; process.Start(); process.WaitForExit(); process.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
}
3. C#调用Coded UI脚本,
Playback.Initialize(); SetBrowserCodedUITest coded = new SetBrowserCodedUITest(); coded.SetBrowserMethod(); Playback.Cleanup();
运行结果如下:
通过测试,我们成功的将IE设置为了默认浏览器。
感谢您的阅读,代码点击这里下载。如果您有其他方法,欢迎与我分享。
Windows 10 使用C#如何将IE设置为默认浏览器的更多相关文章
- 在 Windows 10 专业版、企业版或教育版上设置展台
原文: 在 Windows 10 专业版.企业版或教育版上设置展台 Set up a kiosk on Windows 10 Pro, Enterprise, or Education 适用于 Win ...
- Windows 10设置桌面图标间距、窗口的背景颜色、选中文字的背景颜色
Windows 10取消了“高级外观设置”(或者叫“窗口颜色和外观”设置),想调整一些参数只能进注册表了. 修改后可能需要注销或重启才能生效. 按Win+R,然后输入regedit进入注册表编辑器. ...
- 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体
[源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...
- 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调
[源码下载] 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调 作者: ...
- 为什么 Windows 10 无论怎么设置一分钟后就自动关屏幕?
为什么 Windows 10 无论怎么设置一分钟后就自动关屏幕? 在设置中设置了很多方法,但不管怎么设置就是不行,不到一分钟一定关屏幕. 开始以为是能源之星引起,查了相关资料说不是,那个能源之星标志只 ...
- Windows 10 UWP程序标题栏设置
在Windows 10程序中,以前只能用于全屏方式的Metro程序现在可以运行在窗口模式下了,并且改了个新名字,叫Windows 通用程序(Universal Windows app),简称UWP程序 ...
- Window 10 Alt Tap 切换窗口,设置成Windows 7风格
升级了Windows 10 以后,切换窗口非常的难受.新版的窗口切换的图标变成了窗口预览了,这总让我一瞬间找不到要去的窗口,所以我打算切换成Windows 7 的小图标风格. Windows + R ...
- HP 电脑 - Windows 10 如何设置虚拟内存
HP 电脑 - Windows 10 如何设置虚拟内存(新) 适用于安装 Windows 10 系统的 HP 电脑 Windows 中运用了虚拟内存技术,即分出一部分硬盘空间来充当内存使用.当内存 ...
- How to setup Assigned Access in Windows 10 (Kiosk Mode) 设置分配的访问权限(Kiosk模式)
Let’s say you’re building some sort of ingenious mechanical contraption to be displayed in public th ...
随机推荐
- awk 用法(使用入门)
转自:http://www.cnblogs.com/emanlee/p/3327576.html awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命 ...
- Thinking in java学习笔记之map的应用
Random rand = new Random(47); Map<Integer,Integer> m = new HashMap<Integer,Integer>(); f ...
- 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第五章:荣耀之钥:度量成功 我们的分析师常常得不到我们应得的喜欢,尊重和资金,因为我们没有充分地衡量一个黄金概念:成果.因为我们 ...
- TypeScript Writing .d.ts files(编写声明文件)
当使用扩展的JavaScript库或者插件API的时候,将需要使用声明文件(.d.ts)来描述库的类型.本文内容将包括如何编写声明文件相关的一些高级概念,然后用一些例子来展示如何将各式各样的概念与声明 ...
- HTTP协议 -- 认清协议常用状态码
HTTP协议作为web服务的基础,理所应当受到重视,但是周围的同事能够讲清楚HTTP协议的凤毛麟角.既然是基础,就应该早一点掌握,所以近半年(2016-2月——2016年6月),不准备学习新技术了.首 ...
- Javascript:一个屌丝的逆袭
HTML负责结构, CSS负责展示, 而我(加上AJAX, JSON) 负责逻辑.于是前端编程三剑客形成了. http://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExN ...
- [Unity3D]导入模型并且设置相应的属性
将资源拷贝到Assets中并设置 首先确保法线贴图的属性如下: 设置基本贴图和法线贴图 因为要发布到移动端,设置shader属性: 为了设置更好的反光效果,添加cubemap: 添加新的Materia ...
- redis和memcached的区别(总结)
1.Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等: 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供lis ...
- visio二次开发——图纸解析之线段
多写博客,其实还是蛮好的习惯的,当初大学的时候导师就叫我写,但是就是懒,大学的时候,谁不是魔兽或者LOL呢,是吧,哈哈哈. 好了,接着上一篇visio二次开发——图纸解析,我继续写. 摘要: (转发请 ...
- sql clear dblog
USE [master]GOALTER DATABASE ndFlightPolicy SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE ndFligh ...