c#_自動化測試 (五) 讀寫64位作業系統的註冊表

來源:互聯網
上載者:User

標籤:style   blog   http   java   color   os   io   art   

非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");            }        }
 

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

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

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

軟體測試 (三) 介面測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.