修改注册表,这个代码好实现,关键是怎么找到对应的注册表值,也就是说画一条线很容易,难的是找到要在哪里画,然后我百度了一圈,出来的都是画线的,没有指出或者指出的不全的注册表对应值,只能翻墙谷歌了,也就有了今天这两步。

第一步:找到要设置的选项:注册表与IE设置选项对应表

第二步:根据下面code修改

IE的选项包括Activex插件相关,还有设置相关,我们项目上用到了一个ActiveX插件,但是不能让用户来设置复杂的插件设置,我们可以在安装包里添加相关的选项修改信息。

修改code如下:

using Microsoft.Win32;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using System.Runtime.InteropServices; namespace ExtInstaller
{
[RunInstaller(true)]
public partial class OCXInstaller : System.Configuration.Install.Installer
{
public OCXInstaller()
{
InitializeComponent(); Trace.Listeners.Clear(); //自动清空缓冲(即时写入)
Trace.AutoFlush = true; this.AfterInstall += new InstallEventHandler(OCXInstaller_AfterInstall);
this.BeforeUninstall += new InstallEventHandler(OCXInstaller_BeforeUninstall);
} private void OCXInstaller_AfterInstall(object sender, InstallEventArgs e)
{
//获取用户设定的安装目标路径, 注意,需要在Setup项目里面自定义操作的属性栏里面的CustomActionData添加上/targetdir="[TARGETDIR]\"
string installPath = this.Context.Parameters["targetdir"];
installPath = installPath.TrimEnd('\\') + "\\"; Trace.Listeners.Add(new TextWriterTraceListener(installPath + "UnisOCX.log")); Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始安装");
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始添加环境变量: " + installPath);
//处理环境变量
string pathlist;
bool isPathExist = false; pathlist = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
string[] list = pathlist.Split(';'); foreach (string item in list)
{
if (item == installPath)
isPathExist = true;
} if (!isPathExist)
{ Environment.SetEnvironmentVariable("PATH", pathlist + ";" + installPath, EnvironmentVariableTarget.Machine);
} //添加信任站点
string strURL = "127.0.0.1"; RegistryKey hkml = Registry.CurrentUser;//读取HKEY_CURRENT_USER
string address = @"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\INTERNET SETTINGS\ZONEMAP\RANGES"; RegistryKey key1 = hkml.OpenSubKey(address, true); strURL = this.Context.Parameters["url1"];
RegistryKey Name1 = key1.CreateSubKey("Url1");//新建项 //Name1可随便改
Name1.SetValue(":Range", strURL, RegistryValueKind.String);//赋值 218.66.55.77按需求修改
Name1.SetValue("http", 0x2, RegistryValueKind.DWord);//赋值
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始添加可信站点1:" + strURL); strURL = this.Context.Parameters["url2"];
RegistryKey Name2 = key1.CreateSubKey("Url2");//新建项 //Name1可随便改
Name2.SetValue(":Range", strURL, RegistryValueKind.String);//赋值 218.66.55.77按需求修改
Name2.SetValue("http", 0x2, RegistryValueKind.DWord);//赋值
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始添加可信站点2:" + strURL); strURL = this.Context.Parameters["url3"];
RegistryKey Name3 = key1.CreateSubKey("Url3");//新建项 //Name1可随便改
Name3.SetValue(":Range", strURL, RegistryValueKind.String);//赋值 218.66.55.77按需求修改
Name3.SetValue("http", 0x2, RegistryValueKind.DWord);//赋值
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始添加可信站点3:" + strURL); strURL = this.Context.Parameters["url4"];
RegistryKey Name4 = key1.CreateSubKey("Url4");//新建项 //Name1可随便改
Name4.SetValue(":Range", strURL, RegistryValueKind.String);//赋值 218.66.55.77按需求修改
Name4.SetValue("http", 0x2, RegistryValueKind.DWord);//赋值
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始添加可信站点4:" + strURL); key1.Flush();
key1.Close(); //修改IE的安全性
//1001 下载已签名的 ActiveX 控件
//1004 下载未签名的 ActiveX 控件
//1200 运行 ActiveX 控件和插件
//1201 对没有标记为安全的 ActiveX 控件进行初始化和脚本运行
//1405 对标记为可安全执行脚本的 ActiveX 控件执行脚本
//2201 ActiveX 控件自动提示 ** Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始启用:下载已签名的 ActiveX 控件");
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始启用:下载未签名的 ActiveX 控件");
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始启用:运行 ActiveX 控件和插件");
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始启用:对没有标记为安全的 ActiveX 控件进行初始化和脚本运行");
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始启用:对标记为可安全执行脚本的 ActiveX 控件执行脚本");
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始启用:ActiveX 控件自动提示"); address = @"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\INTERNET SETTINGS\Zones";
RegistryKey key2 = hkml.OpenSubKey(address, true);
RegistryKey respect = key2.OpenSubKey("", true); respect.SetValue("", );// 3=禁用、0=启用、1=提示
respect.SetValue("", );// 3=禁用、0=启用、1=提示
respect.SetValue("", );// 3=禁用、0=启用、1=提示
respect.SetValue("", );// 3=禁用、0=启用、1=提示
respect.SetValue("", );// 3=禁用、0=启用、1=提示
respect.SetValue("", );// 3=禁用、0=启用、1=提示 key2.Flush();
key2.Close();
//设置IE退出时删除历史记录,1表示退出时删除,0表示退出时不删除
address = @"SOFTWARE\MICROSOFT\INTERNET EXPLORER\PRIVACY";
RegistryKey key3 = hkml.OpenSubKey(address, true);
key3.SetValue("ClearBrowsingHistoryOnExit", "");
key3.Flush();
key3.Close();
} //卸载程序后处理
private void OCXInstaller_BeforeUninstall(object sender, InstallEventArgs e)
{ //获取用户设定的安装目标路径, 注意,需要在Setup项目里面自定义操作的属性栏里面的CustomActionData添加上/targetdir="[TARGETDIR]\"
string installPath = this.Context.Parameters["targetdir"];
installPath = installPath.TrimEnd('\\') + "\\"; Trace.Listeners.Add(new TextWriterTraceListener(installPath + "UnisOCX.log"));
Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始卸载"); //删除环境变量
string pathlist, pathAfter = ""; Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始删除环境变量" + installPath);
pathlist = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
string[] list = pathlist.Split(';'); foreach (string item in list)
{
if ((item != installPath) && (item.Trim() != ""))
pathAfter += item + ";";
}
pathAfter.Trim('\\');
Environment.SetEnvironmentVariable("PATH", pathAfter, EnvironmentVariableTarget.Machine); //清理注册表
}
}
}

C#通过修改注册表改变IE默认选项的更多相关文章

  1. AE开发之默认滚轮缩放功能反置(C#修改注册表数据)

    ArcMap默认的滚轮缩放是向下放大,向上缩小 如果想修改成向上放大,向下缩小,直接在ArcMap-Customize-ArcMap Options里, 将最下面的Mouse Wheel and Co ...

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

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

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

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

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

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

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

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

  6. JavaScript修改注册表

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

  7. 通过修改注册表建立Windows自定义协议

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

  8. Win10 启动64位IE浏览器——修改注册表方法

    修改注册表[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]下的: "TabProcGrowth"=DWOR ...

  9. Win7,Vista UAC下应用程序标注为“需要管理员权限”的四种方法(可以修改注册表)

    [转]Vista UAC下应用程序标注为“需要管理员权限”的四种方法 在Microsoft 的UACBlog里对此有过叙述.总结如下: 首先,如果一个程序被识别为管理员程序时,Vista会在它的图标上 ...

随机推荐

  1. gzip压缩目录

    很遗憾,gzip不能针对整个目录进行压缩,只能递归压缩目录下的每一个文件. 当然,替代方案是只用tar进行打包,比如 tar cfz dir.tar.gz dirname

  2. 求同余方程x^A=B(mod m)的解个数(原根与指标)

    求方程:的解个数 分析:设,那么上述方程解的个数就与同余方程组:的解等价. 设同于方程的解分别是:,那么原方程的解的个数就是 所以现在的关键问题是求方程:的解个数. 这个方程我们需要分3类讨论: 第一 ...

  3. 解决ThinkPHP3.2.3框架,PDO驱动查询出来的字段名全是小写的bug

    找到文件:ThinkPHP\Library\Think\Db\Driver.class.php 找到代码: // PDO连接参数 protected $options = array( PDO::AT ...

  4. centos7.2+zabbix3.2+sedmail邮件告警

    http://blog.csdn.net/xiegh2014/article/details/56277111

  5. winform treeView 数据绑定

    转载:http://www.jetwu.cn/archives/737 winform treeView 数据绑定 private void Form1_Load(object sender, Eve ...

  6. 最基础的CSS面试题

    1.Doctype作用是什么?严格模式与混杂模式分别是如何触发这两种模式的,区分它们有何意义? (1)<!DOCTYPE>声明位于文档中的最前面,处于<html>标签之前.告知 ...

  7. NEXUS7 学习

    一.编译环境搭建 (更细节的环境搭建请参考:How to Build CyanogenMod for Nexus 7 (Wi-Fi, 2012 version) (codename: grouper) ...

  8. SQL CTE 递归分割以逗号分隔的字符串

    )) INSERT INTO @t SELECT 'AAA,BBB,CCC' SELECT * FROM @t ;WITH mycte AS ( ,mend,num FROM @t UNION ALL ...

  9. Redis设置使用几号库

    Redis中SpringBoot项目中的配置: 1.引入 spring-boot-starter-redis(POM.XML) <dependency> <groupId>or ...

  10. SVG 基础图形

    SVG 基础图形 SVG包含了以下的基础图形元素: 矩形(包括可选的圆角),使用<rect>元素创建 圆形,使用<circle>元素创建 椭圆形,使用<ellipse&g ...