qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          自動化測試之讀寫64位操作系統的注冊表

           非Web程序(桌面程序)的設置一般都存在注冊表中。 給這些程序做自動化測試時, 需要經常要跟注冊表打交道。 通過修改注冊表來修改程序的設置。
            本章介紹如何利用C#程序如何操作注冊表, 特別是如何操作64位操作系統的注冊表。
            閱讀目錄
            自動化測試經常需要修改注冊表
            Windows注冊表簡介
            C#修改注冊表
            32位機器和64位機器注冊表的區別
            C#程序訪問64位操作系統的注冊表
            自動化測試經常需要修改注冊表
            很多系統的設置(比如:IE的設置)都是存在注冊表中。 桌面應用程序的設置也是存在注冊表中。 所以做自動化測試的時候,經常需要去修改注冊表
            Windows注冊表簡介
            注冊表編輯器在 C:\Windows\regedit.exe。   或者在運行中,運行”regedit”. 就可以啟動注冊表編輯器。
            注冊表由主鍵,鍵,子鍵,值項構成。  如下圖
            主鍵中的:HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE中的內容差不多,一個是當前用戶的設置,一個是機器的設置。
            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位的程序的注冊表還在: 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");
          }
          }

          posted on 2014-02-12 11:03 順其自然EVO 閱讀(423) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年2月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          2324252627281
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宁南县| 谢通门县| 西宁市| 连山| 丹棱县| 富顺县| 吴堡县| 鹤庆县| 绍兴市| 凤凰县| 乃东县| 合水县| 潼南县| 河源市| 浠水县| 辽中县| 甘德县| 资溪县| 松原市| 册亨县| 延寿县| 泸州市| 石林| 新建县| 榆中县| 青浦区| 泸溪县| 湘西| 都安| 黑河市| 鄱阳县| 上林县| 浠水县| 衡阳市| 明溪县| 梧州市| 绍兴县| 乌拉特后旗| 金堂县| 桑日县| 天柱县|