1. 程式人生 > 實用技巧 >自動化測試 (五) 讀寫64位作業系統的登錄檔

自動化測試 (五) 讀寫64位作業系統的登錄檔

非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中的內容差不多,一個是當前使用者的設定,一個是機器的設定。

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");
            }
        }
來源:小坦克https://www.cnblogs.com/TankXiao/default.html?page=1

附: 軟體測試 系列教程, (連載中, 敬請期待)

軟體測試 (一) 軟體測試方法大彙總

軟體測試 (二) 六年軟體測試感悟

軟體測試 (三) 介面測試

附: 自動化測試 系列教程, (連載中, 敬請期待)

自動化測試 (一) 12306火車票網站自動登入工具

自動化測試 (二) 連連看外掛

自動化測試 (三) Web自動化測試原理

自動化測試 (四) 自動解除安裝軟體

自動化測試 (五) 讀寫64位作業系統的登錄檔