C#通过修改注册表改变IE默认选项
修改注册表,这个代码好实现,关键是怎么找到对应的注册表值,也就是说画一条线很容易,难的是找到要在哪里画,然后我百度了一圈,出来的都是画线的,没有指出或者指出的不全的注册表对应值,只能翻墙谷歌了,也就有了今天这两步。
第一步:找到要设置的选项:注册表与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默认选项的更多相关文章
- AE开发之默认滚轮缩放功能反置(C#修改注册表数据)
ArcMap默认的滚轮缩放是向下放大,向上缩小 如果想修改成向上放大,向下缩小,直接在ArcMap-Customize-ArcMap Options里, 将最下面的Mouse Wheel and Co ...
- C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- windows文件关联、打开方式列表之修改注册表攻略
这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...
- 通过cmd修改注册表并设置cmd窗口的大小
设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- JavaScript修改注册表
JavaScript修改注册表 2009-04-14 11:22:13| 分类: JS相关 | 标签: |字号大中小 订阅 注册表有关安全设置项的说明: 注册表路径: HKEY_CURRE ...
- 通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- Win10 启动64位IE浏览器——修改注册表方法
修改注册表[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]下的: "TabProcGrowth"=DWOR ...
- Win7,Vista UAC下应用程序标注为“需要管理员权限”的四种方法(可以修改注册表)
[转]Vista UAC下应用程序标注为“需要管理员权限”的四种方法 在Microsoft 的UACBlog里对此有过叙述.总结如下: 首先,如果一个程序被识别为管理员程序时,Vista会在它的图标上 ...
随机推荐
- 【spring data jpa】jpa中使用in查询或删除 在@Query中怎么写 ,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'goodsConfigUid' cannot be found on null 怎么处理
示例代码如下: @Modifying @Transactional @Query("delete from GoodsBindConfigMapping gbc " + " ...
- 【mybatis】mybatis中insert 主键自增和不自增的插入情况【mysql】
主键不自增:返回值是插入的条数 <insert id="add" parameterType="EStudent"> insert into TSt ...
- coco2dx-2.2.2 win32启动过程(opengl 和 窗口大小初始化部分) - 学习笔记 1
因为最近要做不同分辩率的适配,所于看了下引擎这方面的代码,记录一下当是学习笔记,cocos2d-x 版本 2.2.2 , 例子是samples\Cpp\TestCpp下的 TestCpp. 先看下ma ...
- Merge的山寨版“联机帮助”
IF NOT OBJECT_ID('Demo_AllProducts') IS NULL DROP TABLE Demo_AllProducts GO CREATE TABLE Demo_AllPro ...
- 定期访问WebLogic Server返回状态的脚本
在运维过程中,经常要获悉WebLogic Server的状态以便于主动的维护,本文通过weblogic WLST脚本初步设计了一下 脚本大概为2个,一是WLST的py脚本,getStates.py c ...
- MR hadoop streaming job的学习 combiner
代码已经拷贝到了公司电脑的: /Users/baidu/Documents/Data/Work/Code/Self/hadoop_mr_streaming_jobs 首先是主控脚本 main.sh 调 ...
- map-reduce任务的执行流程
(1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...) (2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HD ...
- [转]Nginx调用远程php-fpm
Nginx调用远程php-fpm 前后端分离的网站,要在异地部署多套网页的时候,这种nginx配置调用远程php-fpm的方式,不错.可以提高网页的相应速度. 原文: https://www.cnbl ...
- HDFS主要节点解说(一)节点功能
1 HDFS体系结构简单介绍及优缺点 1.1体系结构简单介绍 HDFS是一个主/从(Mater/Slave)体系结构.从终于用户的角度来看,它就像传统的文件系统一样,能够通过文件夹路径对文件运行CR ...
- angular - 如何运行在起来 - 使用nginx
nginx下载地址,使用的是标准版的: 点击下载nginx nginx下载完后,解压 dist文件夹下面所有angular文件放入html文件夹中. 最后命令行cd到当前nginx.exe目录,启动命 ...