C#通过修改注册表改变IE默认选项

  修改注册表,这个代码好实现,关键是怎么找到对应的注册表值,也就是说画一条线很容易,难的是找到要在哪里画,然后我百度了一圈,出来的都是画线的,没有指出或者指出的不全的注册表对应值,只能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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宝塔+wordpress搭建/迁移网站

使用宝塔linux和阿里云ECS搭建网站/从百度云服务器迁移网站到阿里云ECS 为服务器安装宝塔软件 示例: ECS:Ubuntu 18.04 打开阿里云控制台,进入已绑定的实例页面,使用workbench或者VNC(推荐使用workbench,workbench可…

智慧交通day03-车道线检测实现05:透视变换+代码实现

为了方便后续的直方图滑窗对车道线进行准确的定位,我们在这里利用透视变换将图像转换成俯视图,也可将俯视图恢复成原有的图像,代码如下: 计算透视变换所需的参数矩阵: def cal_perspective_params(img, points):offs…

LOCAL_MODULE_TAGS 选项说明(android编译选项选择)

LOCAL_MODULE_TAGS :user eng tests optional user: 指该模块只在user版本下才编译 eng: 指该模块只在eng版本下才编译 tests: 指该模块只在tests版本下才编译 optional:指该模块在所有版本下都编译 eng This is the default flavor. A plain "make" is t…

李宏毅老师ML_HW1——PM2.5预测

处理数据之前的pre-process 观察下载的数据文件train.csv train.csv只有每个月前20天的数据,另外每个月剩下10天数据用于作业结果评估,对学生不可见 观察数据发现rainfall栏有很多NR表示没有降雨,但是我们只需要数字,因此可以使用…

“员工请假”流程及在线表单开发示例

1. “员工请假”流程及在线表单开发示例 1.1. 描述 通过本示例达到快速对F2流程管理平台的在线表单速讯上手及零编码式的开发。实现一个以请假为示例的流程及在线表单,及请假数据的查询。 1.2. 目标效果 (1) 如何配置一个“请假在线表单” &a…

【Pytorch神经网络基础理论篇】 03 数据操作 + 数据预处理

同学你好!本文章于2021年末编写,已与实际存在较大的偏差! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)…

git版本控制系统常用指令,Xmind笔记整理

git仓库使用、项目版本管理基本常用指令 纯手工整理Xmind笔记: 点我下载 预览图: Png: 如有错误,谢谢指出

Spark学习(一) -- Spark安装及简介

标签(空格分隔): Spark 学习中的知识点:函数式编程、泛型编程、面向对象、并行编程。 任何工具的产生都会涉及这几个问题: 现实问题是什么?理论模型的提出。工程实现。思考: 数据规模达到一台机…

ValueError:only one element tensors can be converted to Python scalars

缘由是:要转换的list里面的元素包含多维的tensor。c

java起步

例1: javac HelloWorld.java 这是编译 java HelloWorld 这是运行 gedit helloworld.javapublic class helloworld {public static void main(String args[]){int num;num3;System.out.println("this is num"num);} }

Django基本概念、安装、配置到实现框架,Xmind学习笔记

Django从安装、配置到实现简单web框架的基本操作流程 纯手工Xmind笔记整理: 点我下载 预览图: 如有错误,谢谢指出

解决若要安装 Microsoft Office 2010,需要MSXML 版本 6.10.1129的问题

单击 开始单击 运行键入 注册表编辑器然后单击 确定.找到HKEY_CLASSES_ROOT\TypeLib\{F5078F18-C551-11D3-89B9-0000F81FE221}\6.0\0\win32。用鼠标右键单击 win32然后单击 权限.为自己授予完全控制到的项。双击 (默认值) 在下的值 win32然后再更改它的值…

ValueError matplotlib display text must have all code points 128 or use Unicode strings

错误问题&#xff1a;ValueError: matplotlib display text must have all code points < 128 or use Unicode strings 错误原因&#xff1a;在使用matplotlib进行图表展示时&#xff0c;如果需要在图表上添加中文&#xff0c;可能会报字符类型的值错误。 解决办法&#x…

VC6.0常见英文错误对照表

fatal error C1003: error count exceeds number; stopping compilation 中文对照&#xff1a;&#xff08;编译错误&#xff09;错误太多&#xff0c;停止编译 分析&#xff1a;修改之前的错误&#xff0c;再次编译 fatal error C1004: unexpected end of file found 中文…

Django 页面报错 Maximum recursion depth exceeded

Django 页面报错 Maximum recursion depth exceeded 原因&#xff1a; 视图中某个方法或函数的名称与django模块里的方法重名&#xff0c;而且在内部又调用了同名的方法导致重复调用自己 解决方法&#xff1a; 1、logout()换一个命名 # 退出登录使用logout(request)&#xf…

PAT (Basic Level) Practise 1045 快速排序(离散化+主席树区间内的区间求和)

1045. 快速排序(25) 时间限制200 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 CAO, Peng著名的快速排序算法里有一个经典的划分过程&#xff1a;我们通常采用某种方法取一个元素作为主元&#xff0c;通过交换&#xff0c;把比主元小的元素放到它的左边&…

智慧交通day03-车道线检测实现06:车道线定位及拟合+代码实现

学习目标 了解直方图确定车道线位置的思想我们根据前面检测出的车道线信息&#xff0c;利用直方图和滑动窗口的方法&#xff0c;精确定位车道线&#xff0c;并进行拟合。 1. 定位思想 下图是我们检测到的车道线结果&#xff1a; 沿x轴方向统计每一列中白色像素点的个数&…

USB驱动程序

1、USB驱动程序存在于不同的内核子系统(块设备、网络设备、字符设备等等)和USB主控制器之中。 2、USB核心为USB驱动程序提供了一个用于访问和控制USB硬件的接口,而不必考虑系统当前存在的各种不同类型的USB硬件控制器。 2.1 USB里的设备模型 Linux里一个很重要的概念是设备…

TemplateSyntaxError at XXXX或页面样式未生效

报错TemplateSyntaxError at或页面样式未生效 直观原因就是模板的语法有误&#xff0c;造成这一原因的根源是使用pycharm&#xff08;idea&#xff09;的自动注释&#xff0c;而pycharm没有装django配置&#xff0c;ctrl/时会将block中的内容用html注释<!—>包围内容 对…

智慧交通day03-车道线检测实现07:车道曲率和中心点偏离距离计算+代码实现

学习目标 知道车道曲率计算的方法知道计算中心点偏离距离的计算1.曲率的介绍 曲线的曲率就是针对曲线上某个点的切线方向角对弧长的转动率&#xff0c;通过微分来定义&#xff0c;表明曲线偏离直线的程度。数学上表明曲线在某一点的弯曲程度的数值。曲率越大&#xff0c;表示…