C# 操作注册表
在Microsoft.Win32命名空間中提供了兩個類來操作注冊表:Registry類和RegistryKey類,并且這兩個類都是密封類不允許被繼承。
Registry 類
提供表示 Windows 注冊表中的根項的?RegistryKey?對象,并提供訪問項/值對的?static?方法。
Registry?類還包含從注冊表項設置和檢索值的?staticGetValue?和?SetValue?方法。每次使用這兩種方法時,它們都會打開和關閉注冊表項,所以,當您訪問大量值時,使用這兩種方法不如使用?RegistryKey?類中的類似方法。
RegistryKey?類還提供了可用來為注冊表項設置 Windows 訪問控制安全性的方法、可用來在檢索值之前測試值的數據類型的方法以及刪除項的方法。
RegistryKey 類
表示 Windows 注冊表中的項級節點。?此類是注冊表封裝。
?
RegistryKey.OpenSubKey 方法 (String)?以只讀方式檢索子項。
RegistryKey.OpenSubKey 方法 (String, Boolean)?檢索指定的子項,并指定是否將寫訪問權限應用于該項。
必須先打開項才能用其他方法和屬性對其進行操作。?要修改項,必須用適當的?OpenSubKey?方法重載打開所需的項,該重載應能允許指定寫訪問,例如,OpenSubKey(String, RegistryKeyPermissionCheck)?重載或?OpenSubKey(String, Boolean)?重載。
如果找不到指定的子項,則返回?null。
要使用?OpenSubKey?方法,您必須擁有?RegistryKey?的實例。?要獲取?RegistryKey?的實例,請使用?Registry?類的靜態成員之一。
?
View Code?
得到PC上安裝的Word版本 #region 得到PC上安裝的Word版本/// <summary>/// 得到PC上安裝的Word版本/// </summary>/// <returns></returns>private string GetWordVersion(){IList<string> ilistSubKeys = new List<string>();IList<string> ilistVersion = new List<string>();string[] OfficeVersionNames = new string[5] { "8.0", "9.0", "14.0", "11.0", "12.0" };//目前發行的office所有版本string[] OfficeExistVersion;//本地計算機上所有office版本string[] OfficeSubKeys;//本地計算機注冊表Office目錄下所有子項string OfficeCurrentVersion = "";//本地計算機安裝的Office版本string OSVersion;//本地計算機操作系統版本OSVersion = GetOSVersion();if (OSVersion == "WIN 7"){RegistryKey regkey = Registry.LocalMachine;RegistryKey sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office");foreach (string str in sys.GetSubKeyNames()){ilistSubKeys.Add(str);}OfficeSubKeys = ilistSubKeys.ToArray<string>();for (int i = 0; i < OfficeSubKeys.Length; i++){for (int j = 0; j < OfficeVersionNames.Length; j++){if (OfficeSubKeys[i] == OfficeVersionNames[j]){ilistVersion.Add(OfficeSubKeys[i]);}}}OfficeExistVersion = ilistVersion.ToArray<string>();for(int k=0;k<OfficeExistVersion .Length ;k++){sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]);foreach (string str in sys.GetSubKeyNames()){if (str == "Word"){sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]).OpenSubKey(@"Word").OpenSubKey(@"InstallRoot");if (sys != null){OfficeCurrentVersion = OfficeExistVersion[k];break;}}}}}else if (OSVersion == "WIN XP"){RegistryKey regkey = Registry.CurrentUser;RegistryKey sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office");foreach (string str in sys.GetSubKeyNames()){ilistSubKeys.Add(str);}OfficeSubKeys = ilistSubKeys.ToArray<string>();for (int i = 0; i < OfficeSubKeys.Length; i++){for (int j = 0; j < OfficeVersionNames.Length; j++){if (OfficeSubKeys[i] == OfficeVersionNames[j]){ilistVersion.Add(OfficeSubKeys[i]);}}}OfficeExistVersion = ilistVersion.ToArray<string>();for (int k = 0; k < OfficeExistVersion.Length; k++){sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]);foreach (string str in sys.GetSubKeyNames()){if (str == "Word"){sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]).OpenSubKey(@"Word").OpenSubKey(@"Options");if (sys != null){OfficeCurrentVersion = OfficeExistVersion[k];break;}}}}}else{OfficeCurrentVersion = "11.0";}return OfficeCurrentVersion;}#endregion?
獲取本地計算器操作系統版本 /// <summary>/// 獲取本地計算器操作系統版本/// </summary>/// <returns></returns>private string GetOSVersion(){Version ver = System.Environment.OSVersion.Version;string ClientOSVersion = "";if (ver.Major == 5 && ver.Minor == 1){ClientOSVersion = "WIN XP";}else if (ver.Major == 5 && ver.Minor == 0){ClientOSVersion = "WIN 2000";}else if (ver.Major == 6 && ver.Minor == 1){ClientOSVersion = "WIN 7";}else if (ver.Major == 6 && ver.Minor == 0){ClientOSVersion = "WIN Vista";}else{ClientOSVersion ="未知";}return ClientOSVersion ; }#endregion注:本文整理自MSDN!!!
復制搜索 復制搜索轉載于:https://www.cnblogs.com/YuanSong/archive/2012/08/01/2618344.html
總結
- 上一篇: 搜索引擎提交注意事项
- 下一篇: C#enum枚举