自动化测试读写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 相关文章推荐
js控制框架刷新
Aug 01 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
适用于javascript开发者的Processing.js入门教程
Feb 24 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
jQuery 利用ztree实现树形表格的实例代码
Sep 27 jQuery
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
js实现图片局部放大效果详解
Mar 18 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+MySQL插入操作实例
2015/01/21 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
Python常见数据结构详解
2014/07/24 Python
python中list列表的高级函数
2016/05/17 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
高三高考决心书
2014/03/11 职场文书
环境卫生倡议书
2014/08/29 职场文书
保险公司演讲稿
2014/09/02 职场文书
公民授权委托书范本
2014/09/17 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
员工规章制度范本
2015/08/07 职场文书
2019经典广告词集锦!
2019/07/02 职场文书