繁体   English   中英

使用 VB.NET 检查 Windows 注册表中是否存在密钥

[英]Check if a key exists in the Windows Registry with VB.NET

在 VB.NET 中,我可以像这样在 Windows 注册表中创建一个键:

My.Computer.Registry.CurrentUser.CreateSubKey("TestKey")

我可以像这样检查键中是否存在

If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\MyKey", _
        "TestValue", Nothing) Is Nothing Then
    MsgBox("Value does not exist.")
Else
    MsgBox("Value exist.")
End If

但是如何检查注册表中是否存在具有特定名称的密钥

一种方法是使用Registry.OpenSubKey方法

If Microsoft.Win32.Registry.LocalMachine.OpenSubKey("TestKey") Is Nothing Then
  ' Key doesn't exist
Else
  ' Key existed
End If

但是我建议你不要走这条路。 OpenSubKey方法返回Nothing意味着该密钥在过去的某个时间点不存在。 当该方法返回另一个程序中的另一个操作时,可能已导致创建密钥。

我不会检查密钥是否存在并在事后创建它,而是直接转到CreateSubKey

我用这个代码。 它简单易用,适用于HKEY_CURRENT_USER\\Software\\YourAppSettings

代码:

string[]  kyes=Registry.CurrentUser.OpenSubKey(@"Software\YourAppSettings").GetValueNames();
if (!kyes.Contains("keytoknowIfExist"))
      {

      }

感谢您提供的信息 - 这对我有很大帮助,但是当我在 Visual Studio 开发模块中时我确实注意到了。 设置保存在 Computer\HKEY_CURRENT_USER\Software\VB 和 VBA Program Settings\Elementary\Backup 下 - 与完成的已安装软件不同。 我正在使用,即 SaveSetting("Elementary", "Backup", "BackupFile", bdbname)

因为我不知道一旦我的产品完成后我的设置将保存在注册表中的确切位置,所以我尝试了这个并且它对我来说非常完美。 我不必知道确切位置,这很有帮助。

    If GetSetting("Elementary", "Backup", "BackupFile", Nothing) <> Nothing Then
        DeleteSetting("Elementary", "Backup", "BackupFile")
        bdbname = ""
    End If

无论如何,希望它能帮助将来的人......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM