在VB.NET中更改注册表值

len*_*iep 1 vb.net registry uac

我已经搜索了很多,以找到解决我的问题的方法,但我找不到任何具体的解决方案.

我需要更改存储在下面的值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)
Run Code Online (Sandbox Code Playgroud)

regKey.SetValue("IP","192.168.10.15:15800")regKey.Close()

不幸的是,当我尝试设置值时,我得到一个NullReferenceExeption.

我该怎么办?我导入了Microsoft.Win32,RegistryKey不接受任何构造函数.

Han*_*ant 5

从密钥名称中删除"HKEY_LOCAL_MACHINE",该名称已在代码中的LocalMachine成员中涵盖.

请注意,此代码无法在常规Vista或Win7计算机上运行,​​因此无法在启用UAC的情况下打开此密钥进行写入.您需要一个需要管理员权限的清单.写信给My.Computer.Registry.CurrentUser.

如果在64位版本的Windows上运行此操作,则更复杂的是注册表虚拟化.32位程序将从HKLM\Software\Wow6432Node读取和写入HKLM\Software密钥.