C#修改注册表设置默认浏览器
项目中用到VPN技术登录来访问内部网络的应用系统,VPN客户端连接后会自动以默认浏览器来打开站点,由于应用系统使用的前端框架对IE浏览器版本要求较高,而用户大多数的电脑里安装的IE的版本都较低,于是想到U盘里放上免安装的浏览器,接着通过执行一个程序自动将U盘里的浏览器设置为默认浏览器。winXP和win7设置默认浏览器的注册表项会有所不同,具体C#代码如下:
public static void CreateUSBWebUrlForWin7()
{
string currentPath = System.AppDomain.CurrentDomain.BaseDirectory; RegistryKey regCR = Registry.ClassesRoot;
RegistryKey regCommand = null;
if (!IsExistSubKey(regCR, DIY_KEY_NAME))
{
//创建自定义的注册表项
regCommand = regCR.CreateSubKey(DIY_KEY_NAME, RegistryKeyPermissionCheck.ReadWriteSubTree)
.CreateSubKey("Shell", RegistryKeyPermissionCheck.ReadWriteSubTree)
.CreateSubKey("open", RegistryKeyPermissionCheck.ReadWriteSubTree)
.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree);
}
else
{
//打开已存在的自定义注册表项
regCommand = regCR.OpenSubKey(DIY_KEY_NAME, true)
.OpenSubKey("Shell", true)
.OpenSubKey("open", true)
.OpenSubKey("command", true);
}
regCommand.SetValue("", "\"" + currentPath + "\\360se6\\Application\\360se.exe\" -- \"%1\""); RegistryKey regCU = Registry.CurrentUser;
RegistryKey regUrlAssoc = regCU.OpenSubKey("Software", true).OpenSubKey("Microsoft", true).OpenSubKey("Windows", true)
.OpenSubKey("Shell", true)
.OpenSubKey("Associations", true)
.OpenSubKey("UrlAssociations", true);
RegistryKey regHttpChoice = regUrlAssoc.OpenSubKey("http", true).OpenSubKey("UserChoice", true);
regHttpChoice.SetValue("Progid", DIY_KEY_NAME);
RegistryKey regHttpsChoice = regUrlAssoc.OpenSubKey("https", true).OpenSubKey("UserChoice", true);
regHttpsChoice.SetValue("Progid", DIY_KEY_NAME);
}
public static void CreateUSBWebUrlForWinXP()
{
string currentPath = System.AppDomain.CurrentDomain.BaseDirectory; RegistryKey regCR = Registry.ClassesRoot;
RegistryKey regCRhttp = regCR.OpenSubKey("http", true).OpenSubKey("shell", true).OpenSubKey("open", true);
RegistryKey regHttpCmd = regCRhttp.OpenSubKey("command", true);
regHttpCmd.SetValue("", "\"" + currentPath + "\\360se6\\Application\\360se.exe\" -- \"%1\"");
RegistryKey regCRhttps = regCR.OpenSubKey("https", true).OpenSubKey("shell", true).OpenSubKey("open", true);
RegistryKey regHttpsCmd = regCRhttps.OpenSubKey("command", true);
regHttpsCmd.SetValue("", "\"" + currentPath + "\\360se6\\Application\\360se.exe\" -- \"%1\"");
}
private static bool IsExistSubKey(RegistryKey key,string subKeyName)
{
string[] subKeyNames = key.GetSubKeyNames();
foreach (string keyName in subKeyNames)
{
if (keyName == subKeyName)
{
return true;
}
}
return false;
}
对于系统是winXP还是win7的判断可以用以下代码判断:
int sysVer = System.Environment.OSVersion.Version.Major;
switch (sysVer)
{
case : CreateUSBWebUrlForWinXP(); break;
case : CreateUSBWebUrlForWin7(); break;
}
C#修改注册表设置默认浏览器的更多相关文章
- 通过cmd修改注册表(设置cmd窗口的大小)
通过cmd修改注册表(设置cmd窗口的大小) 设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con:启动时设置窗口大小: cmd /k "mode ...
- 通过修改注册表设置windows环境变量
开发环境搭建每次都要设置很多环境变量, 一般是通过 [菜单]->[计算机]->[属性]->[高级设置]->[环境变量]进行设置,重装系统后,每次都要设置很多环境变量,很麻烦. ...
- 通过cmd修改注册表并设置cmd窗口的大小
设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...
- C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- windows文件关联、打开方式列表之修改注册表攻略
这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- 修改注册表信息来兼容当前WebBrower程序
public class WebBrower { /// <summary> /// 修改注册表信息来兼容当前程序 /// /// </summary> public stat ...
- Windows删除/修改注册表权限不足的解决方法
在注册表的某些关键项(譬如:System.Root),连Administrator都没有权限进行修改,因为只有“system”有权限. [警告]切勿企图进行注册表上层权限覆盖低层权限的方式来使Admi ...
- JavaScript修改注册表
JavaScript修改注册表 2009-04-14 11:22:13| 分类: JS相关 | 标签: |字号大中小 订阅 注册表有关安全设置项的说明: 注册表路径: HKEY_CURRE ...
随机推荐
- SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"
环境描述: 今天在虚拟机上安装了Linux系统,并且装了DB2,但是在连接的时候遇到了个问题,百思不得其解.下面是具体问题跟解决办法 问题描述: 解决办法: 1.先ping服务器是否可以ping通. ...
- swift学习初步(四)-- 函数
好了,让我们开始接着前几天写的系列博客开始今天的这篇博客.在swift里面如果你需要定义一个方法的话,你需要使用关键字:func,请看下面的这段代码: func sayHello(name:Strin ...
- MySQL 触发器简单实例
~~语法~~ CREATE TRIGGER <触发器名称> --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE | ...
- VisualSVN Server添加svn项目
如果你想把一个项目添加到svn的步骤: 第一步:打开VisualSVN Server,在目录Repositries目录下,创建一个文件夹名称: 第二步:要把导入的项目,指定到这个路径:如下图:
- html 元素 变小手
要设置鼠标指针放在一个元素边界范围内时所用的光标形状,需要对元素的css属性cursor进行设置.cursor属性可能的值1.default 默认光标(通常是一个箭头)2.auto 默认.浏览器设置的 ...
- VC++编程之对话框贴图
基于对话框的程序写好后,为对话框贴上个图片让界面更加美观(我承认做界面,MFC显得力不从心,不如QT). 其实很简单,我们以位图为例,选好我们需要的位图资源(bmp),假若自己的图片不是位图资源,可以 ...
- Linux Shell常用技巧(目录)
Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev ...
- preseed.cfg分区设定案例
很久之前做ubuntu的PXE配置ubuntu的preseed费了很大的力气,总结的不多,现在温习一下. 就我所接触的,有分区普通磁盘,LVM,和raid三种方式.其中前两中方式比较多,raid方式是 ...
- fwrite ,fprintf的作用与区别
1.概念和作用 fwrite是C语言函数,指向文件写入一个数据块,写入的是 fprintf是C/C++中的一个格式化写-库函数,其作用是格式输出到一个流/文件中:原型是int fprintf( FIL ...
- php 设计API之优化 记
服务器端 可以考虑使用rest实现,清晰url:put http://aa.com/news 客户端 curl实现muliti机制,实现多线程并发,节省多接口调用的时间 curl实现keepalive ...