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 ...
随机推荐
- 6.初探Asynctask
AsyncTask定义了三种泛型类型 Params,Progress和Result. Params 启动任务执行的输入参数,比如HTTP请求的URL.Progress 后台任务执行的百分比.Resul ...
- bzoj 2527: [Poi2011]Meteors 整体二分
给每个国家建一个链表,这样分治过程中的复杂度就和序列长度线形相关了,无脑套整体二分就可以. (最坑的地方是如果所有位置都是一个国家,那么它的样本个数会爆longlong!!被这个坑了一次,大于p[i] ...
- hihoCoder 后缀数组 重复旋律
#1403 : 后缀数组一·重复旋律 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成 ...
- 【BZOJ-1340】Escape逃跑问题 最小割
1340: [Baltic2007]Escape逃跑问题 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 264 Solved: 121[Submit] ...
- CSS3选择器:nth-of-type
碰到了个选择器,:nth-of-type <!DOCTYPE html> <html> <head> <meta http-equiv="Conte ...
- 简要介绍BASE64、MD5、SHA、HMAC几种方法。
加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了. 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书. ...
- python学习笔记-(十四)进程&协程
一. 进程 1. 多进程multiprocessing multiprocessing包是Python中的多进程管理包,是一个跨平台版本的多进程模块.与threading.Thread类似,它可以利用 ...
- 11月8日下午Jquery取属性值(复选框、下拉列表、单选按钮)、做全选按钮、JSON存储、去空格
1.jquery取复选框的值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- Google Map API V3开发(4)
Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...
- css 实现三角形 实现过程
1.纯色的全等的三角形实现 下面的就是实际实现 没有宽高 只有边框 都是透明 根据箭头的方向 给边框方法加颜色 比如需要像右箭头 只需要给border-right-color:颜色值; 即可 c ...