我已经搜索了很多东西来找到解决我问题的方法,但我找不到任何具体的解决方案。
我需要更改HKEY_LOCAL_MACHINE\SOFTWARE\APP_NAME
下存储的值。不可能使用.NET的注册表功能,因为它们有严格的限制。
以下代码段可以解决我的问题:
Dim regKey As RegistryKey
Dim ver As Decimal
regKey = My.Computer.Registry.LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\SOFTWARE\APP_NAME", True)
regKey.SetValue(“IP”,“192.168.10.15:18500”) regKey.Close()
不幸的是,当我尝试设置值时,我得到一个NullReferenceExeption。
我该怎么办?我导入了Microsoft.Win32,RegistryKey不接受任何构造函数。
答案 0 :(得分:5)
从密钥名称中删除“HKEY_LOCAL_MACHINE”,该名称已在代码中的LocalMachine成员中涵盖。
请注意,此代码无法在常规Vista或Win7计算机上运行,因此无法在启用UAC的情况下打开此密钥进行写入。您需要一个需要管理员权限的清单。写信给My.Computer.Registry.CurrentUser。
如果您在64位版本的Windows上运行此操作,则还有一个复杂因素是注册表虚拟化。 32位程序将从HKLM \ Software \ Wow6432Node读取和写入HKLM \ Software密钥。
答案 1 :(得分:2)
子密钥是否存在?从MSDN引用:如果请求的密钥不存在,则返回空引用(在Visual Basic中为Nothing)而不是抛出异常。。
答案 2 :(得分:2)
我认为您需要这样做:
regKey = My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE",True).OpenSubKey("APP_NAME", True)