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

第一步:找到要设置的选项:注册表与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("2", true);respect.SetValue("1001", 0);// 3=禁用、0=启用、1=提示  respect.SetValue("1004", 0);// 3=禁用、0=启用、1=提示  respect.SetValue("1200", 0);// 3=禁用、0=启用、1=提示  respect.SetValue("1201", 0);// 3=禁用、0=启用、1=提示  respect.SetValue("1405", 0);// 3=禁用、0=启用、1=提示  respect.SetValue("2201", 0);// 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", "1");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);//清理注册表
        }}
}

转载于:https://www.cnblogs.com/ningheshutong/p/8133832.html

C#通过修改注册表改变IE默认选项相关推荐

  1. 如何通过修改注册表改变系统的默认文件夹

    如何通过修改注册表改变系统的默认文件夹 注册表是windows的命根,里面储存着大量的系统信息,说白了就是一个庞大的数据库.如果你不懂什么是数据库,那没关系,不影响你了解注册表,不过最好对数据库有所了 ...

  2. PPC修改注册表大全 (注册表必看)(转载)

    在PPC上很多功能可以通过改注册表实现  下面是一些较为常用的注册表修改方法 一共有133条 前面是目录 后面对应的是实现功能和修改方法--希望对大家有帮助 理论上通用与WM2003  5.0 6.1 ...

  3. 修改注册表文件改变Okular软件PDF文件类型图标

    一.修改需求 因为学习需要,经常查看各种PDF,自带的Microsoft Edge阅读PDF文件虽然迅速简洁,但是侧栏的目录并不太好用,尤其是当目录太多时,侧栏显示效果并不好,且不能自由调整大小,查询 ...

  4. 获得WIN7管理员权限(可通过修改注册表,或者组策略改变)

    获得WIN7管理员权限(可通过修改注册表,或者组策略改变) 在使用WIN7过程中,常常会再出现没有管理员权限而不能正常运行软件(有的软件直接就是打不开,有的软件不能正常运行(比如如果没有管理员权限,k ...

  5. java 注册表 乱码_修改注册表 消除应用软件的乱码显示

    文/明静 在注册表中通过应用软件的设置,不仅可以提高应用水平,还可以解决一些疑难问题. ●消除应用软件的乱码显示: 在注册表中打开HKEY_LOCAL_MACHINESYSTEMCurrentCont ...

  6. 修改注册表来修改文件关联

    [注册表]文件关联篇 2009-04-23 11:15 如何通过修改注册表来修改文件关联 喜欢使用Windows右键快捷菜单的朋友可能知道,当你选择了一个文件(或者是文件夹或是系统图标)再单击鼠标右键 ...

  7. 修改注册表消除应用软件乱码显示(转)

    修改注册表消除应用软件乱码显示(转)[@more@] 在注册表中通过应用软件的设置,不仅可以提高应用水平,还可以解决一些疑难问题. 消除应用软件的乱码显示: 在注册表中打开HKEY_LOCAL_MAC ...

  8. 剖析恶意网页修改注册表的十二种现象

    [小蓉] 近来,屡屡发生网友在浏览网页时,造成注册表被修改,使得IE默认连接首页.标题栏及IE右键菜单被改为浏览网页时的地址(多为广告信息),更有甚者使浏览者的电脑在启动时出现一个提示窗口显示自己的广 ...

  9. electron+vue项目打包时修改注册表功能

    electron+vue项目打包时修改注册表功能 原因 在使用electron做项目时,由于产品需要做一个放大镜功能.在查找了网上大部分类似需求后,发现大部分的放大镜都是对图片的放大,真正实现放大镜功 ...

最新文章

  1. topcoder srm 635 div1
  2. 一本通1655数三角形
  3. Cent OS 6.4安装mysql
  4. php用a什么软件来下载,AMQB官方PHP库
  5. jQuery+toggle
  6. MicroK8s及KubeFlow安装文档
  7. 右下角出现测试模式 win7 内部版本7601如何去掉
  8. sql计数_SQL计数区分功能概述
  9. java 有意思面试题_一些JAVA中有趣的面试题
  10. Restful规范-开发api接口
  11. 允许其他用户通过本计算机连接+连接手机,如何用手机搜索到的WF网络通过数据线连接台式电脑,让台式电脑共享网络...
  12. mysql负载均衡分区_利用分区和负载均衡获得更大更好的MySQL数据库[转载]
  13. pb语言是什么计算机语言,pb编程语言
  14. python输入两个坐标求距离_python计算两个地址之间的距离方法
  15. JSESSIONID理解
  16. chrome浏览器性能分析
  17. 如何用计算机制作海报,用电脑怎么做海报_电脑用什么软件做海报
  18. 分享一个代码合并工具
  19. 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换的方法
  20. 直接管理和维护计算机系统的程序称为,全国2008年04月自学考试计算机原理试题及答案.doc...

热门文章

  1. linux 文件夹的颜色代表什么意思
  2. Javascript 基础笔记
  3. 推荐:解析“extern”
  4. 制作Slider组件
  5. 如何成为一名合格的数据分析师
  6. Jsoup遍历ul li下的链接信息实例
  7. netty SimpleChannelInboundHandler类继承使用
  8. RedHat6.2 x86手动配置LNMP环境
  9. linux+apache+mysql+php
  10. POLYCOM RMX2000 激活与初始化 信令板卡初始化