自动化测试读写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比较文档位置
Apr 08 Javascript
chrome原生方法之数组
Nov 30 Javascript
JS设置网页图片vspace和hspace属性的方法
Apr 01 Javascript
JavaScript ParseFloat()方法
Dec 18 Javascript
jQuery实现的调整表格行tr上下顺序
Jan 10 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
Aug 19 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
JavaScript实现选中文字提示新浪微博分享效果
Jun 15 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
Jul 02 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
浅谈 JavaScript 沙箱Sandbox
Nov 02 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正则表达式之定界符和原子介绍
2012/10/05 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
JavaScript DOM基础
2015/04/13 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python深入学习之上下文管理器
2014/08/31 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
大学生水果店创业计划书
2014/01/28 职场文书
财产公证书格式
2014/04/10 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
热情服务标语
2014/10/07 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS