2016-06-15 42 views
1

我正在嘗試讀取其他應用程序註冊表值,但我沒有獲得太多成功。我已經在Google上搜索了整整一頁半的搜索結果,但沒有找到我期待的內容。以字符串形式返回註冊表值

我想讀下面的註冊表值:

\\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\AVG CloudCare\DisplayVersion 

的典型值是:「3.5.3」

我使用這個代碼,我在網上找到:

RegistryKey RegInfo = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\AVG CloudCare", false); 

object CCVersionReg = RegInfo.GetValue("DisplayVersion", "0"); 

Console.WriteLine(CCVersionReg); 
Console.ReadLine(); 

但是,我總是得到一個錯誤:「對象引用未設置爲對象的實例。」。

我試圖將對象轉換爲這樣的字符串:

Console.WriteLine(CCVersionReg.ToString); 

這也不起作用,與錯誤「,無法轉換從‘布爾’‘法團’

我需要這個的原因是該版本與用於更新應用程序,我需要使用字符串比較值已知的最新版本進行比較。

+0

您是否確認密鑰實際存在於正在運行它的計算機上? – Frecklefoot

+0

當您忘記子鍵字符串中的Wow6432Node部分時,RegInfo可能爲空。 –

回答

2

試試這個

var key = @"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\AVG CloudCare"; 
Console.WriteLine(Registry.GetValue(key, "DisplayVersion", "0")?.ToString()); 

ToString()null對象上調用,它拋出Object reference not set to an instance of an object

+0

非常感謝,這已經完成了這項工作。比我一直在嘗試的更簡單! – user2924019

2

你的錯誤

Console.WriteLine(CCVersionReg.ToString); 

拋出的錯誤,因爲CCVersion.ToString是方法組。你需要做這個調用的方法:

Console.WriteLine(CCVersionReg.ToString()); 

然而,你會得到一個空引用異常(如你所看到的),如果CCVersionReg爲null。檢查它是否已正確創建

+0

非常感謝,沒有注意到我錯過了()。 – user2924019

相關問題