C# 以字符串形式返回注册表值
我正在尝试读取另一个应用程序注册表值,但没有取得多大成功。我在谷歌上搜索了整整一页半的搜索结果,但没有找到我想要的 我正在尝试读取以下注册表值:C# 以字符串形式返回注册表值,c#,C#,我正在尝试读取另一个应用程序注册表值,但没有取得多大成功。我在谷歌上搜索了整整一页半的搜索结果,但没有找到我想要的 我正在尝试读取以下注册表值: \\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\AVG CloudCare\DisplayVersion 典型值为:“3.5.3” 我正在使用我在网上找到的代码: RegistryKey RegInfo = Registry.Lo
\\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);
这也不起作用,错误是“无法从'bool'转换为'methodgroup'
我之所以需要它,是为了将此版本与更新程序应用程序的已知最新版本进行比较,我需要使用字符串来比较值。试试这个
var key = @"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\AVG CloudCare";
Console.WriteLine(Registry.GetValue(key, "DisplayVersion", "0")?.ToString());
当对null
对象调用ToString()
时,它会抛出未设置为对象实例的对象引用
var key = @"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\AVG CloudCare";
Console.WriteLine(Registry.GetValue(key, "DisplayVersion", "0")?.ToString());
当对null
对象调用ToString()
时,它会抛出未设置为对象实例的对象引用您的应用程序是否在64位操作系统上运行?
如果是,请参阅:您的应用程序是否在64位操作系统上运行?
如果是,请参阅:您的错误
Console.WriteLine(CCVersionReg.ToString);
正在引发该错误,因为CCVersion.ToString是一个方法组。您需要通过执行以下操作来调用该方法:
Console.WriteLine(CCVersionReg.ToString());
但是,如果CCVersionReg为null,则会出现null引用异常(如您所见)。请检查是否正确创建了该异常,以避免出现错误
Console.WriteLine(CCVersionReg.ToString);
正在引发该错误,因为CCVersion.ToString是一个方法组。您需要通过执行以下操作来调用该方法:
Console.WriteLine(CCVersionReg.ToString());
但是,您将得到一个空引用异常(如您所见)如果CCVersionReg为null。请检查是否正确创建了它是否验证了密钥是否确实存在于正在运行它的计算机上?RegInfo
可能是null
,因为您忘记了子密钥字符串中的Wow6432Node
部分。是否验证了密钥确实存在于正在运行它的计算机上t on?RegInfo
可能是null
,因为您忘记了子键字符串中的Wow6432Node
部分。非常感谢这项工作完成了。比我一直尝试的要简单得多!非常感谢这项工作完成了。比我一直尝试的要简单得多!