自动化测试读写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 设置缓存及获取设置的缓存
May 08 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
Nov 16 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
Aug 08 Javascript
js实现简单分页导航栏效果
Jun 28 Javascript
layui 富文本赋值,取值,取纯文本值的实例
Sep 18 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 Javascript
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
如何手写简易的 Vue Router
Oct 10 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
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
深入PHP数据加密详解
2013/06/18 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
Python玩转Excel的读写改实例
2019/02/22 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
初三政治教学反思
2014/01/30 职场文书
演讲主持词
2014/03/18 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
教师节活动总结
2014/08/29 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书