c# - 注册表测试注册表项值 - C# Visual Studio 2019
问题描述
我一直在尝试测试value
注册表项,但没有成功。我尝试了很多建议,但没有成功。我错过了什么?
问题:对于 value = 0 AND value = 1,此代码始终返回 false(而注册表中的实际值是0
- 如下面的屏幕截图所示)。
using Microsoft.Win32;
string rpath = @"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\";
string rkey = "EnableLUA";
object value = "0";
if ((Registry.GetValue(rpath, rkey, value) == value))
{
Console.WriteLine("true");
}
else
{
Console.WriteLine("false");
}
// public static object? GetValue (string keyName, string? valueName, object? defaultValue);
// https://docs.microsoft.com/en-us/dotnet/api/microsoft.win32.registry.getvalue?view=net-5.0
我在 Visual Studio 2019 和 .NET 5.0 中使用 C#
解决方案
使用.ToString()
方法来比较这些值。
if (Registry.GetValue(rpath, rkey, value).ToString() == value.ToString())
{
Console.WriteLine("true");
}
else
{
Console.WriteLine("false");
}
您也可以使用(int)
— Cast 运算符。object value = 0;
(如果你使用这个,你必须改变..)
更新 :
try
{
RegistryKey rKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System");
object rValue = rKey.GetValue("EnableLUA");
if (rValue == null)
{
Console.WriteLine("No such value!");
}
else if (rValue.ToString() == "0")
{
Console.WriteLine("true");
}
else if (rValue.ToString() == "1")
{
Console.WriteLine("false");
}
}
catch (NullReferenceException)
{
Console.WriteLine("No such subkey!");
}
推荐阅读
- mongodb - 如何让 Unity3D 2018(或更高版本)与 MongoDB C# 驱动程序一起使用?
- python - 在整合一组数据时,发生轴错误。这个错误的原因和解决方法是什么?
- java - 下载文件并保存到光盘不起作用
- octave - 有没有办法使用 TeX(希腊字母、下标、上标等)使 octave 解释 uicontrol 静态文本中的字符串?
- c# - ASP .Net Core 空数组查询参数绑定异常
- bash - 如何在期望脚本的 if 条件中使用变量?
- clang - 为什么隐式免费的声明在 llvm 中采用 vararg 参数
- java - 用java抓取网页并下载视频
- ios - 在 iOS 上执行 Unix/任意命令
- javascript - Blogspot 帖子内容:如何使用 javascript 获取第二张图片 src