自动化测试读写64位操作系统的注册表


Posted in Javascript onAugust 15, 2016

非Web程序(桌面程序)的设置一般都存在注册表中。 给这些程序做自动化测试时, 需要经常要跟注册表打交道。 通过修改注册表来修改程序的设置。

本章介绍如何利用C#程序如何操作注册表, 特别是如何操作64位操作系统的注册表。

阅读目录

  1. 自动化测试经常需要修改注册表
  2. Windows注册表简介
  3. C#修改注册表
  4. 32位机器和64位机器注册表的区别
  5. C#程序访问64位操作系统的注册表

自动化测试经常需要修改注册表

很多系统的设置(比如:IE的设置)都是存在注册表中。 桌面应用程序的设置也是存在注册表中。 所以做自动化测试的时候,经常需要去修改注册表

Windows注册表简介

注册表编辑器在 C:\Windows\regedit.exe。   或者在运行中,运行"regedit". 就可以启动注册表编辑器。

注册表由主键,键,子键,值项构成。  如下图

主键中的:HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE中的内容差不多,一个是当前用户的设置,一个是机器的设置。

 自动化测试读写64位操作系统的注册表

 C#修改注册表

C#修改注册表实在是太简单了,先添加 using Microsoft.Win32; 几行代码就搞定了,  看下面的实例, 读,增,删,改,操作都有了。

static void Main(string[] args)
  {
   // 实例, 修改IE主页
   RegistryKey localMachine = Registry.CurrentUser;
   RegistryKey sougou = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN", true);
   // 获取IE 的主页
   string version = sougou.GetValue("Start Page").ToString();
   // 修改IE的主页 
   sougou.SetValue("Start Page", "http://www.cnblogs.com/", RegistryValueKind.String);

   // 修改Tanktest这个值项, 如不存在,则新建TankTest值项。
   sougou.SetValue("TankTest2", "1", RegistryValueKind.DWord);
   // 删除值项
   sougou.DeleteValue("TankTest2");
   
   // 新建子键
   sougou.CreateSubKey("This is subkey1");
   sougou.CreateSubKey("This is subkey2");
   
   // 删除子键
   sougou.DeleteSubKey("This is subkey1");
  }

32位操作系统和64位操作系统注册表的区别

上面的代码在32位的操作系统上运行没问题, 但是在64位操作系统中就不行了。

应用软件也有32位和64位之分。  在64位的操作系统中, 可以运行32位的应用程序和64位的应用程序。

如果在64位操作系统中安装32位的应用程序, 会安装到C:\Program Files(x86)\下。 启动任务管理器,你会看到32位的程序的进程名字后会带一个 ”*32“, 如下图:

自动化测试读写64位操作系统的注册表

注意: 64位操作系统中: 

64位的程序的注册表还在: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer

32位的程序的注册表而是在: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer

C#程序访问64位操作系统的注册表

 C#的程序都是32位的,访问注册表的时候,会访问HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\, 而访问不到HKEY_LOCAL_MACHINE\SOFTWARE\

.NET 3.5以前 C#程序需要通过Win32API函数(要写几百行代码)才能访问64位操作系统的注册表。

.NET 4.0 后访问64位操作系统的注册表很简单了。

static void Main(string[] args)
  {
   // 修改64位操作系统的注册表
   // 修改IE的首页
   // 通过RegistryView 来指定是64位操作系统还是32位
   RegistryKey localKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry64);
   localKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main", true);
   if (localKey != null)
   {
    localKey.SetValue("Start Page", "http://www.cnblogs.com");
   }
  }

以上就是自动化测试读写64位操作系统的注册表的资料,后续继续整理相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
this[] 指的是什么内容 讨论
Mar 24 Javascript
javascript 多种搜索引擎集成的页面实现代码
Jan 02 Javascript
js操作ajax返回的json的注意问题!
Feb 23 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
Nov 23 Javascript
BootStrap智能表单demo示例详解
Jun 13 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
jQuery UI制作选项卡(tabs)
Dec 13 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
0基础学习前端开发的一些建议
Jul 14 Javascript
详解JavaScript自定义函数
Jul 29 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 #Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 #Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 #Javascript
Web安全测试之XSS实例讲解
Aug 15 #Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 #Javascript
卸载安装Node.js与npm过程详解
Aug 15 #Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
Aug 15 #Javascript
You might like
php下统计用户在线时间的一种尝试
2010/08/26 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
jquery实现图片预加载
2015/12/25 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
浅析Python中的多重继承
2015/04/28 Python
基于python 字符编码的理解
2017/09/02 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
Python中按键来获取指定的值
2019/03/02 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
python 如何停止一个死循环的线程
2020/11/24 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
公司部门司机岗位职责
2014/01/03 职场文书
经济担保书范文
2014/04/02 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
高校教师个人总结
2015/02/10 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS