.net如何在注册表中建立子项?

时间:2022-07-13 15:38:01
请注意,是子项(子目录,不是子键)。
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)还可以允许在数据不存在的情况下返回默认值

#2


以上我给你的例子是ms给的。
顺便说明一下:
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();

#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坐标

#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)还可以允许在数据不存在的情况下返回默认值

#2


以上我给你的例子是ms给的。
顺便说明一下:
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();

#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坐标

#5


为什么我用了CreateSubKey()建立的是子键而不是子项?这其中有什么窍门?

#6


已解决,谢谢