自动化测试读写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 相关文章推荐
jQuery 学习6 操纵元素显示效果的函数
Feb 07 Javascript
13个绚丽的Jquery 界面设计网站推荐
Sep 28 Javascript
javascript面向对象包装类Class封装类库剖析
Jan 24 Javascript
javascript中的throttle和debounce浅析
Jun 06 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
javascript实现延时显示提示框效果
Jun 01 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
如何使用puppet替换文件中的string
Dec 06 Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
php的ajax简单实例
2014/02/27 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
canvas绘制七巧板
2017/02/03 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python中实现常量(Const)功能
2015/01/28 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python中字符串List按照长度排序
2019/07/01 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
PageFactory设计模式基于python实现
2020/04/14 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
大学自我评价
2014/02/12 职场文书
迟到检讨书300字
2014/02/14 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS