自动化测试读写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 相关文章推荐
javascript 尚未实现错误解决办法
Nov 27 Javascript
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
js 事件处理函数间的Event物件是否全等
Apr 08 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
JavaScript获取table中某一列的值的方法
May 06 Javascript
基于javascript html5实现3D翻书特效
Mar 14 Javascript
深入理解jQuery事件绑定
Jun 02 Javascript
Bootstrap面板(Panels)的简单实现代码
Mar 17 Javascript
React-Native左右联动List的示例代码
Sep 21 Javascript
vue+webpack实现异步组件加载的方法
Feb 03 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
Jul 26 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
在数据量大(超过10万)的情况下
2007/01/15 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
浅入深出Vue之组件使用
2019/07/11 Javascript
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
Python单链表简单实现代码
2016/04/27 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
Tesserocr库的正确安装方式
2018/10/19 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
纽约海:Sea New York
2018/11/04 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
绿色学校实施方案
2014/03/31 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js