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会在它的图标上 ...
随机推荐
- wait和notify函数的规范代码模板
// The standard idiom for calling the wait method in Java synchronized (sharedObject) { while (condi ...
- Jetty错误:java.lang.IllegalStateException: Form too large 270468>200000的问题解决
说明: 1.200000单位为byte,并不是2MB,而是200KB,换算参考:https://calc.itzmx.com/ 2.这个是表单提交后长度超过了200KB造成的,除了表单Form,还有U ...
- 学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础--第4章
第4章 子查询 4.2.1 Exist 谓语: use TSQLFundamentals2008 select * from Sales.Customers as C where c.country= ...
- 如何让vs2017 EF实体生成支持Mysql 和 Oracle?
1.Mysql 安装 MySql Connector/Net https://dev.mysql.com/downloads/connector/net/ 安装 mysql f ...
- JAMon监控SQL执行时间
JAMon监控web工程方法的调用性能 http://www.cnblogs.com/zfc2201/p/3786365.html 这往往篇文章主要告诉大家如何监控web方法调用时间,在这个基础这上, ...
- zClip使用时ZeroClipboard生成的位置不对的问题
zclip官网:http://steamdev.com/zclip 我之前在另外一篇博文里面写了一个解决生成的位置不对的问题,请参考:http://www.cnblogs.com/longshiyVi ...
- [Angular] Angular Custom Change Detection with ChangeDetectorRef
Each component has its own ChangeDetectorRef, and we can inject ChangeDetectorRef into constructor: ...
- jQuery编程小结
加载jQuery 1.坚持使用CDN来加载jQuery,这种别人服务器免费帮你托管文件的便宜干嘛不占呢.点击查看使用CDN的好处,点此查看一些主流的jQuery CDN地址. <script t ...
- matlab经常使用小函数(一)
(第1维为对每一列操作.第2维维对每一行操作) sum 求和操作 max 求最大值操作 sum:求和操作 sum(A):矩阵A按列向求和(每一列求和).结果为一个行向量 sum(A,2):矩阵 ...
- oracle新建一个表空间和用户来測试
首先对表空间作例如以下说明 暂时表空间:是在做大数据量排序时.分组操作时用的.正常这些都是在内存中完毕的.但在大数据量排序处理时.内存不够用的情况下就会用到暂时表空间,这里是不存放表的,有点类似于操作 ...