標籤:style blog http java color os io art
非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"); } }
附: 軟體測試 系列教程, (連載中, 敬請期待)
軟體測試 (一) 軟體測試方法大匯總
軟體測試 (二) 六年軟體測試感悟
軟體測試 (三) 介面測試