RegstryKey只有一个CreateSubKey()能建子键,但建子项的函数找不到,郁闷!
望高手指点
6 个解决方案
#1
下面的代码说明如何使用OpenSubKey和CreateSubKey方法打开或者创建一个HKEY_LOCAL_MACHINE层下SOFTWARE项中的子项,并返回一个RegistryKey类的实例。
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
有了这个RegistryKey类的实例的引用后,我们就能够利用方法SetValue和GetValue在这个注册表项下面创建键值并读写数据了。(在使用Registry类之前需要先引入Microsoft.Win32名称空间)
Imports Microsoft.Win32
Module Module1
Sub Main()
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
rkA = Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
'写键值
rkA.SetValue("CompanyName", "MyCompany")
Dim strTemp As String
'读键值
strTemp = CType(rkA.GetValue("CompanyName"), String)
Console.Write("CompanyName is {0}", strTemp)
End Sub
End Module
方法GetValue(String, Object)还可以允许在数据不存在的情况下返回默认值
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
有了这个RegistryKey类的实例的引用后,我们就能够利用方法SetValue和GetValue在这个注册表项下面创建键值并读写数据了。(在使用Registry类之前需要先引入Microsoft.Win32名称空间)
Imports Microsoft.Win32
Module Module1
Sub Main()
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
rkA = Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
'写键值
rkA.SetValue("CompanyName", "MyCompany")
Dim strTemp As String
'读键值
strTemp = CType(rkA.GetValue("CompanyName"), String)
Console.Write("CompanyName is {0}", strTemp)
End Sub
End Module
方法GetValue(String, Object)还可以允许在数据不存在的情况下返回默认值
#2
以上我给你的例子是ms给的。
顺便说明一下:
CreateSubKey创建的是子项,然后通过OpenSubKey来打开这个项目
接着使用RegistryKey的SetValue和GetValue来创建和读取键值对。
顺便说明一下:
CreateSubKey创建的是子项,然后通过OpenSubKey来打开这个项目
接着使用RegistryKey的SetValue和GetValue来创建和读取键值对。
#3
RegistryKey key = Registry.LocalMachine;
RegistryKey key1 = key.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key1.SetValue("MyProgram", "c:\\123.exe"); //子项
key1.Close();
RegistryKey key1 = key.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key1.SetValue("MyProgram", "c:\\123.exe"); //子项
key1.Close();
#4
using Microsoft.Win32;
RegistryKey SoftwareKey=Registry.LocalMachine.OpenSubKey("Software",true);
RegistryKey MovecontKey=SoftwareKey.CreateSubKey("Movecont");//建立
RegistryKey SelfPlaceKey=MovecontKey.CreateSubKey("SelfPlace");//建立
SelfPlaceKey.SetValue("BackColor",(object)BackColor.ToKnownColor());//写
SelfPlaceKey.SetValue("Red",(object)(int)BackColor.R);//红
SelfPlaceKey.SetValue("Green",(object)(int)BackColor.G);//绿
SelfPlaceKey.SetValue("Blue",(object)(int)BackColor.B);//蓝
SelfPlaceKey.SetValue("Width",(object)Width);//宽
SelfPlaceKey.SetValue("Height",(object)Height);//高
SelfPlaceKey.SetValue("X",(object)DesktopLocation.X);//左上角X坐标
SelfPlaceKey.SetValue("Y",(object)DesktopLocation.Y);//左上角Y坐标
SelfPlaceKey.SetValue("WindowState",(object)WindowState.ToString());//左上角Y坐标
RegistryKey SoftwareKey=Registry.LocalMachine.OpenSubKey("Software",true);
RegistryKey MovecontKey=SoftwareKey.CreateSubKey("Movecont");//建立
RegistryKey SelfPlaceKey=MovecontKey.CreateSubKey("SelfPlace");//建立
SelfPlaceKey.SetValue("BackColor",(object)BackColor.ToKnownColor());//写
SelfPlaceKey.SetValue("Red",(object)(int)BackColor.R);//红
SelfPlaceKey.SetValue("Green",(object)(int)BackColor.G);//绿
SelfPlaceKey.SetValue("Blue",(object)(int)BackColor.B);//蓝
SelfPlaceKey.SetValue("Width",(object)Width);//宽
SelfPlaceKey.SetValue("Height",(object)Height);//高
SelfPlaceKey.SetValue("X",(object)DesktopLocation.X);//左上角X坐标
SelfPlaceKey.SetValue("Y",(object)DesktopLocation.Y);//左上角Y坐标
SelfPlaceKey.SetValue("WindowState",(object)WindowState.ToString());//左上角Y坐标
#5
为什么我用了CreateSubKey()建立的是子键而不是子项?这其中有什么窍门?
#6
已解决,谢谢
#1
下面的代码说明如何使用OpenSubKey和CreateSubKey方法打开或者创建一个HKEY_LOCAL_MACHINE层下SOFTWARE项中的子项,并返回一个RegistryKey类的实例。
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
有了这个RegistryKey类的实例的引用后,我们就能够利用方法SetValue和GetValue在这个注册表项下面创建键值并读写数据了。(在使用Registry类之前需要先引入Microsoft.Win32名称空间)
Imports Microsoft.Win32
Module Module1
Sub Main()
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
rkA = Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
'写键值
rkA.SetValue("CompanyName", "MyCompany")
Dim strTemp As String
'读键值
strTemp = CType(rkA.GetValue("CompanyName"), String)
Console.Write("CompanyName is {0}", strTemp)
End Sub
End Module
方法GetValue(String, Object)还可以允许在数据不存在的情况下返回默认值
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
有了这个RegistryKey类的实例的引用后,我们就能够利用方法SetValue和GetValue在这个注册表项下面创建键值并读写数据了。(在使用Registry类之前需要先引入Microsoft.Win32名称空间)
Imports Microsoft.Win32
Module Module1
Sub Main()
Dim rkA As RegistryKey
rkA = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyKey", True)
If rkA Is Nothing Then
rkA = Registry.LocalMachine.CreateSubKey("SOFTWARE\MyKey")
End If
'写键值
rkA.SetValue("CompanyName", "MyCompany")
Dim strTemp As String
'读键值
strTemp = CType(rkA.GetValue("CompanyName"), String)
Console.Write("CompanyName is {0}", strTemp)
End Sub
End Module
方法GetValue(String, Object)还可以允许在数据不存在的情况下返回默认值
#2
以上我给你的例子是ms给的。
顺便说明一下:
CreateSubKey创建的是子项,然后通过OpenSubKey来打开这个项目
接着使用RegistryKey的SetValue和GetValue来创建和读取键值对。
顺便说明一下:
CreateSubKey创建的是子项,然后通过OpenSubKey来打开这个项目
接着使用RegistryKey的SetValue和GetValue来创建和读取键值对。
#3
RegistryKey key = Registry.LocalMachine;
RegistryKey key1 = key.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key1.SetValue("MyProgram", "c:\\123.exe"); //子项
key1.Close();
RegistryKey key1 = key.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key1.SetValue("MyProgram", "c:\\123.exe"); //子项
key1.Close();
#4
using Microsoft.Win32;
RegistryKey SoftwareKey=Registry.LocalMachine.OpenSubKey("Software",true);
RegistryKey MovecontKey=SoftwareKey.CreateSubKey("Movecont");//建立
RegistryKey SelfPlaceKey=MovecontKey.CreateSubKey("SelfPlace");//建立
SelfPlaceKey.SetValue("BackColor",(object)BackColor.ToKnownColor());//写
SelfPlaceKey.SetValue("Red",(object)(int)BackColor.R);//红
SelfPlaceKey.SetValue("Green",(object)(int)BackColor.G);//绿
SelfPlaceKey.SetValue("Blue",(object)(int)BackColor.B);//蓝
SelfPlaceKey.SetValue("Width",(object)Width);//宽
SelfPlaceKey.SetValue("Height",(object)Height);//高
SelfPlaceKey.SetValue("X",(object)DesktopLocation.X);//左上角X坐标
SelfPlaceKey.SetValue("Y",(object)DesktopLocation.Y);//左上角Y坐标
SelfPlaceKey.SetValue("WindowState",(object)WindowState.ToString());//左上角Y坐标
RegistryKey SoftwareKey=Registry.LocalMachine.OpenSubKey("Software",true);
RegistryKey MovecontKey=SoftwareKey.CreateSubKey("Movecont");//建立
RegistryKey SelfPlaceKey=MovecontKey.CreateSubKey("SelfPlace");//建立
SelfPlaceKey.SetValue("BackColor",(object)BackColor.ToKnownColor());//写
SelfPlaceKey.SetValue("Red",(object)(int)BackColor.R);//红
SelfPlaceKey.SetValue("Green",(object)(int)BackColor.G);//绿
SelfPlaceKey.SetValue("Blue",(object)(int)BackColor.B);//蓝
SelfPlaceKey.SetValue("Width",(object)Width);//宽
SelfPlaceKey.SetValue("Height",(object)Height);//高
SelfPlaceKey.SetValue("X",(object)DesktopLocation.X);//左上角X坐标
SelfPlaceKey.SetValue("Y",(object)DesktopLocation.Y);//左上角Y坐标
SelfPlaceKey.SetValue("WindowState",(object)WindowState.ToString());//左上角Y坐标
#5
为什么我用了CreateSubKey()建立的是子键而不是子项?这其中有什么窍门?
#6
已解决,谢谢