自动化测试读写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 相关文章推荐
扩展String功能方法
Sep 22 Javascript
用javascript编写的第一人称射击游戏
Feb 25 Javascript
js Array对象的扩展函数代码
Apr 24 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
jQuery中has()方法用法实例
Jan 06 Javascript
javascript异步编程代码书写规范Promise学习笔记
Feb 11 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
js实现简单的手风琴效果
Feb 27 Javascript
Vue.js实战之组件之间的数据传递
Apr 01 Javascript
vue使用keep-alive实现数据缓存不刷新
Oct 21 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 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新手上路(十四)
2006/10/09 PHP
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
php实现aes加密类分享
2014/02/16 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PDO::inTransaction讲解
2019/01/28 PHP
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
python实现音乐下载的统计
2018/06/20 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
python实现梯度下降算法
2020/03/24 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
在Django中实现添加user到group并查看
2019/11/18 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
公司总经理助理岗位职责
2014/07/09 职场文书
户籍证明书标准模板
2014/09/10 职场文书
幽灵公主观后感
2015/06/09 职场文书