自动化测试读写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 相关文章推荐
在页面上点击任一链接时触发一个事件的代码
Apr 07 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
Dec 02 Javascript
javascript页面上使用动态时间具体实现
Mar 18 Javascript
JQUERY简单按钮轮换选中效果实现方法
May 07 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
Nov 22 Javascript
vue.js全局API之nextTick全面解析
Jul 07 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
electron实现qq快捷登录的方法示例
Oct 22 Javascript
如何换个角度使用VUE过滤器详解
Sep 11 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数据库的常用代码
2014/08/11 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
php实现数据库的增删改查
2017/02/26 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
Stop SQL Server
2007/06/21 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
CentOS安装pillow报错的解决方法
2016/01/27 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
SQL Server笔试题
2012/01/10 面试题
投资建议书模板
2014/05/12 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
部门2014年度工作总结
2014/11/12 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
旗帜观后感
2015/06/08 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers