项目中用到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#修改注册表设置默认浏览器的更多相关文章

  1. 通过cmd修改注册表(设置cmd窗口的大小)

    通过cmd修改注册表(设置cmd窗口的大小) 设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con:启动时设置窗口大小: cmd /k "mode ...

  2. 通过修改注册表设置windows环境变量

    开发环境搭建每次都要设置很多环境变量, 一般是通过  [菜单]->[计算机]->[属性]->[高级设置]->[环境变量]进行设置,重装系统后,每次都要设置很多环境变量,很麻烦. ...

  3. 通过cmd修改注册表并设置cmd窗口的大小

    设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...

  4. C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  5. windows文件关联、打开方式列表之修改注册表攻略

    这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...

  6. 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  7. 修改注册表信息来兼容当前WebBrower程序

    public class WebBrower { /// <summary> /// 修改注册表信息来兼容当前程序 /// /// </summary> public stat ...

  8. Windows删除/修改注册表权限不足的解决方法

    在注册表的某些关键项(譬如:System.Root),连Administrator都没有权限进行修改,因为只有“system”有权限. [警告]切勿企图进行注册表上层权限覆盖低层权限的方式来使Admi ...

  9. JavaScript修改注册表

    JavaScript修改注册表 2009-04-14 11:22:13|  分类: JS相关 |  标签: |字号大中小 订阅     注册表有关安全设置项的说明: 注册表路径: HKEY_CURRE ...

随机推荐

  1. .NET开源工作流RoadFlow-流程设计-流程属性设置

    打开流程设计器点击新建流程后会弹出新流程属性设置框,属性设置包括基本信息,数据连接和标识字段三项设置. 1.基本信息 流程ID:系统自动给每个流程分配的一个唯一ID. 流程名称:给您的新流程取一个名称 ...

  2. CentOS 7 + nginx + uwsgi + web2py (502 bad gateway nginx)

    Web2py开发包中自带的setup-web2py-nginx-uwsgi-centos64.sh脚本, 只能运行在CentOS 6.4中使用, 如果直接在CentOS 7 中使用该脚本布署后, 访问 ...

  3. C#类型的转换:Converter<TInput, TOutput> 委托的使用

    Converter<TInput, TOutput> 委托 表示将对象从一种类型转换为另一种类型的方法. 此委托由 Array 类的 ConvertAll<TInput, TOutp ...

  4. iOS 中使用md5加密

    #import <CommonCrypto/CommonDigest.h> @implementation MD5Util +(NSString *)encode:(NSString *) ...

  5. XAML中的Path

    利用Path创建图形的时候,如果path对象的Fill属性不设置,那么绘制出来的图形首尾是不连接的. 如果设置了Fill属性,当Fill的Color属性为Transparent时,图形也不会首尾连接: ...

  6. mongodb修改器

    mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...

  7. DataTable分组归类

    我们在做项目的时候,经常需要根据表或DataTable中某些字段来归类,为此就写出以下方法,帮组需要的人. #region 对DataTable进行分组 + public void GroupData ...

  8. 在windows下用eclipse + pydev插件来配置python的开发环境

    在windows下用eclipse + pydev插件来配置python的开发环境 一.安装 python 可以到网上下个Windows版的python,官网为:https://www.python. ...

  9. 作用域+闭包+this理解

    函数预解析过程   函数会覆盖同名变量 也就是var  他的优先级高   如果是同名函数则后者覆盖前者   逐行解读代码的时候 表达式 和参数 会改变预解析仓库里面的值..也就是表达式能干掉函数   ...

  10. ptype_base和ptype_all学习笔记

    "linux-2.6.32/include/linux/netdevice.h" struct packet_type { __be16 type; /* This is real ...