gpt4 book ai didi

c# - 获取注册表值导致程序无一异常(exception)结束

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:48 26 4
gpt4 key购买 nike

我正致力于在 Windows 窗体中获取和设置注册表值。

我的代码是这样的:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("SmogUser");
if (((Guid)key.GetValue("DeviceId", Guid.Empty)) == Guid.Empty)
{
Guid deviceId = Guid.NewGuid();
key.SetValue("DeviceId", deviceId);
key.Close();
}
else
{
Guid deviceId = (Guid)key.GetValue("DeviceId");
}

当我第一次运行程序时,它进入if子句并设置deviceId,但是当我第二次运行时,程序没有继续,也没有异常。

问题是什么?

最佳答案

我不太明白为什么 RegistryKey.GetValue() 方法行为是错误的,但我使用这段代码解决了你的问题:

        Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("SmogUser");
if (key != null)
{
var value = key.GetValue("DeviceId", null) ?? Guid.Empty;

if (Guid.Empty.Equals(value))
{
Guid deviceId = Guid.NewGuid();
key.SetValue("DeviceId", deviceId);
key.Close();
}
else
{
var deviceId = (Guid)key.GetValue("DeviceId");
}
}

似乎如果您将 null 作为默认值传递,该方法不会崩溃。然后,您可以检查 null 并将 Guid 变量值设置为 Guid.Empty

关于c# - 获取注册表值导致程序无一异常(exception)结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16054439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com