自动化测试读写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 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
两种常用的javascript数组去重方法思路及代码
Mar 26 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
高性能JavaScript模板引擎实现原理详解
Feb 05 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
js实现分割上传大文件
Mar 09 Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 Javascript
微信小程序 教程之WXSS
Oct 18 Javascript
JS字符串false转boolean的方法(推荐)
Mar 08 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
浅析Angular 实现一个repeat指令的方法
Jul 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+dbfile开发小型留言本
2006/10/09 PHP
php的一个简单加密解密代码
2014/01/14 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
PHP多文件上传实例
2015/07/09 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
js实现分页功能
2017/05/24 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python isinstance函数用法详解
2020/02/13 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
创联软件面试题笔试题
2012/10/07 面试题
有模特经验的简历自我评价
2013/09/19 职场文书
年度考核自我鉴定
2013/11/09 职场文书
房地产活动策划方案
2014/05/14 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
自我推荐信怎么写
2015/03/24 职场文书
不同意离婚答辩状
2015/05/22 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
MySQL 聚合函数排序
2021/07/16 MySQL
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python