自动化测试读写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 相关文章推荐
Extjs入门之动态加载树代码
Apr 09 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
Feb 03 Javascript
jquery获取子节点和父节点的示例代码
Sep 10 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 Javascript
jQuery.event兼容各浏览器的event详细解析
Dec 18 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
Web开发必知Javascript技巧大全
Feb 23 Javascript
JavaScript九九乘法口诀表的简单实现
Oct 04 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
vue分页器组件编写方法详解
Jun 28 Javascript
element中table高度自适应的实现
Oct 21 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编程效率的53个要点(经验小结)
2010/09/04 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
不打扫卫生检讨书
2014/02/12 职场文书
五一活动标语
2014/06/30 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript