RegistryKey.CreateSubKey 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建一个新子项或打开一个现有子项。
重载
CreateSubKey(String) |
创建一个新子项或打开一个现有子项以进行写访问。 |
CreateSubKey(String, RegistryKeyPermissionCheck) |
使用指定的权限检查选项创建一个新子项或打开一个现有子项以进行写访问。 |
CreateSubKey(String, Boolean) |
创建一个新子项或打开具有指定访问权限的现有子项。 从 .NET Framework 4.6 开始可用。 |
CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity) |
使用指定的权限检查选项和注册表安全性创建一个新子项或打开一个现有子项以进行写访问。 |
CreateSubKey(String, Boolean, RegistryOptions) |
创建一个新子项或打开具有指定访问权限的现有子项。 从 .NET Framework 4.6 开始可用。 |
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions) |
使用指定的权限检查和注册表选项,创建或打开一个用于写访问的子项。 |
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity) |
使用指定的权限检查选项、注册表选项和注册表安全性,创建或打开一个用于写访问的子项。 |
CreateSubKey(String)
- Source:
- RegistryKey.cs
创建一个新子项或打开一个现有子项以进行写访问。
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey);
member this.CreateSubKey : string -> Microsoft.Win32.RegistryKey
Public Function CreateSubKey (subkey As String) As RegistryKey
参数
- subkey
- String
要创建或打开的子项的名称或路径。 此字符串不区分大小写。
返回
新创建的子项,如果操作失败,则为 null
。 如果为 subkey
指定了长度为零的字符串,则返回当前 RegistryKey 对象。
例外
subkey
为 null
。
用户没有创建或打开注册表项所需的权限。
调用此方法时所针对的 RegistryKey 已关闭(无法访问已关闭的项)。
无法写入 RegistryKey;例如,它不是作为可写入项打开的,或者用户没有必需的访问权限。
示例
下面的代码示例演示如何在HKEY_CURRENT_USER下创建子项,操作其内容,然后删除子项。
using namespace System;
using namespace System::Security::Permissions;
using namespace Microsoft::Win32;
int main()
{
// Create a subkey named Test9999 under HKEY_CURRENT_USER.
RegistryKey ^ test9999 = Registry::CurrentUser->CreateSubKey( "Test9999" );
// Create two subkeys under HKEY_CURRENT_USER\Test9999.
test9999->CreateSubKey( "TestName" )->Close();
RegistryKey ^ testSettings = test9999->CreateSubKey( "TestSettings" );
// Create data for the TestSettings subkey.
testSettings->SetValue( "Language", "French" );
testSettings->SetValue( "Level", "Intermediate" );
testSettings->SetValue( "ID", 123 );
testSettings->Close();
// Print the information from the Test9999 subkey.
Console::WriteLine( "There are {0} subkeys under Test9999.", test9999->SubKeyCount.ToString() );
array<String^>^subKeyNames = test9999->GetSubKeyNames();
for ( int i = 0; i < subKeyNames->Length; i++ )
{
RegistryKey ^ tempKey = test9999->OpenSubKey( subKeyNames[ i ] );
Console::WriteLine( "\nThere are {0} values for {1}.", tempKey->ValueCount.ToString(), tempKey->Name );
array<String^>^valueNames = tempKey->GetValueNames();
for ( int j = 0; j < valueNames->Length; j++ )
{
Console::WriteLine( "{0,-8}: {1}", valueNames[ j ], tempKey->GetValue( valueNames[ j ] )->ToString() );
}
}
// Delete the ID value.
testSettings = test9999->OpenSubKey( "TestSettings", true );
testSettings->DeleteValue( "id" );
// Verify the deletion.
Console::WriteLine( dynamic_cast<String^>(testSettings->GetValue( "id", "ID not found." )) );
testSettings->Close();
// Delete or close the new subkey.
Console::Write( "\nDelete newly created registry key? (Y/N) " );
if ( Char::ToUpper( Convert::ToChar( Console::Read() ) ) == 'Y' )
{
Registry::CurrentUser->DeleteSubKeyTree( "Test9999" );
Console::WriteLine( "\nRegistry key {0} deleted.", test9999->Name );
}
else
{
Console::WriteLine( "\nRegistry key {0} closed.", test9999->ToString() );
test9999->Close();
}
}
using System;
using System.Security.Permissions;
using Microsoft.Win32;
class RegKey
{
static void Main()
{
// Create a subkey named Test9999 under HKEY_CURRENT_USER.
RegistryKey test9999 =
Registry.CurrentUser.CreateSubKey("Test9999");
// Create two subkeys under HKEY_CURRENT_USER\Test9999. The
// keys are disposed when execution exits the using statement.
using(RegistryKey
testName = test9999.CreateSubKey("TestName"),
testSettings = test9999.CreateSubKey("TestSettings"))
{
// Create data for the TestSettings subkey.
testSettings.SetValue("Language", "French");
testSettings.SetValue("Level", "Intermediate");
testSettings.SetValue("ID", 123);
}
// Print the information from the Test9999 subkey.
Console.WriteLine("There are {0} subkeys under {1}.",
test9999.SubKeyCount.ToString(), test9999.Name);
foreach(string subKeyName in test9999.GetSubKeyNames())
{
using(RegistryKey
tempKey = test9999.OpenSubKey(subKeyName))
{
Console.WriteLine("\nThere are {0} values for {1}.",
tempKey.ValueCount.ToString(), tempKey.Name);
foreach(string valueName in tempKey.GetValueNames())
{
Console.WriteLine("{0,-8}: {1}", valueName,
tempKey.GetValue(valueName).ToString());
}
}
}
using(RegistryKey
testSettings = test9999.OpenSubKey("TestSettings", true))
{
// Delete the ID value.
testSettings.DeleteValue("id");
// Verify the deletion.
Console.WriteLine((string)testSettings.GetValue(
"id", "ID not found."));
}
// Delete or close the new subkey.
Console.Write("\nDelete newly created registry key? (Y/N) ");
if(Char.ToUpper(Convert.ToChar(Console.Read())) == 'Y')
{
Registry.CurrentUser.DeleteSubKeyTree("Test9999");
Console.WriteLine("\nRegistry key {0} deleted.",
test9999.Name);
}
else
{
Console.WriteLine("\nRegistry key {0} closed.",
test9999.ToString());
test9999.Close();
}
}
}
Imports System.Security.Permissions
Imports Microsoft.Win32
Public Class RegKey
Shared Sub Main()
' Create a subkey named Test9999 under HKEY_CURRENT_USER.
Dim test9999 As RegistryKey = _
Registry.CurrentUser.CreateSubKey("Test9999")
' Create two subkeys under HKEY_CURRENT_USER\Test9999.
test9999.CreateSubKey("TestName").Close()
Dim testSettings As RegistryKey = _
test9999.CreateSubKey("TestSettings")
' Create data for the TestSettings subkey.
testSettings.SetValue("Language", "French")
testSettings.SetValue("Level", "Intermediate")
testSettings.SetValue("ID", 123)
testSettings.Close()
' Print the information from the Test9999 subkey.
Console.WriteLine("There are {0} subkeys under Test9999.", _
test9999.SubKeyCount.ToString())
For Each subKeyName As String In test9999.GetSubKeyNames()
Dim tempKey As RegistryKey = _
test9999.OpenSubKey(subKeyName)
Console.WriteLine(vbCrLf & "There are {0} values for " & _
"{1}.", tempKey.ValueCount.ToString(), tempKey.Name)
For Each valueName As String In tempKey.GetValueNames()
Console.WriteLine("{0,-8}: {1}", valueName, _
tempKey.GetValue(valueName).ToString())
Next
Next
' Delete the ID value.
testSettings = test9999.OpenSubKey("TestSettings", True)
testSettings.DeleteValue("id")
' Verify the deletion.
Console.WriteLine(CType(testSettings.GetValue( _
"id", "ID not found."), String))
testSettings.Close()
' Delete or close the new subkey.
Console.Write(vbCrLf & "Delete newly created " & _
"registry key? (Y/N) ")
If Char.ToUpper(Convert.ToChar(Console.Read())) = "Y"C Then
Registry.CurrentUser.DeleteSubKeyTree("Test9999")
Console.WriteLine(vbCrLf & "Registry key {0} deleted.", _
test9999.Name)
Else
Console.WriteLine(vbCrLf & "Registry key {0} closed.", _
test9999.ToString())
test9999.Close()
End If
End Sub
End Class
注解
若要执行此操作,用户必须在注册表层次结构中具有此级别和更低级别的权限。
注意
不要以恶意程序可能创建数千个无意义的子项或键/值对的方式公开 RegistryKey 对象。 例如,不允许调用方输入任意键或值。
另请参阅
适用于
CreateSubKey(String, RegistryKeyPermissionCheck)
- Source:
- RegistryKey.cs
使用指定的权限检查选项创建一个新子项或打开一个现有子项以进行写访问。
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck);
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck -> Microsoft.Win32.RegistryKey
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck -> Microsoft.Win32.RegistryKey
Public Function CreateSubKey (subkey As String, permissionCheck As RegistryKeyPermissionCheck) As RegistryKey
参数
- subkey
- String
要创建或打开的子项的名称或路径。 此字符串不区分大小写。
- permissionCheck
- RegistryKeyPermissionCheck
用于指定打开该项是进行读取还是读取/写入访问的枚举值之一。
返回
新创建的子项,如果操作失败,则为 null
。 如果为 subkey
指定了长度为零的字符串,则返回当前 RegistryKey 对象。
- 属性
例外
subkey
为 null
。
用户没有创建或打开注册表项所需的权限。
permissionCheck
包含无效值。
调用此方法时所针对的 RegistryKey 已关闭(无法访问已关闭的项)。
无法写入 RegistryKey;例如,它不是作为可写入项打开的,或者用户没有必需的访问权限。
注解
若要执行此操作,用户必须在注册表层次结构中具有此级别和更低级别的权限。
注意
不要以恶意程序可能创建数千个无意义的子项或键/值对的方式公开 RegistryKey 对象。 例如,不允许调用方输入任意键或值。
若要使用 OpenSubKey 方法,必须具有 类的 RegistryKey 实例。 若要获取 的 RegistryKey实例,请使用 类的静态成员之 Registry 一。
另请参阅
适用于
CreateSubKey(String, Boolean)
- Source:
- RegistryKey.cs
创建一个新子项或打开具有指定访问权限的现有子项。 从 .NET Framework 4.6 开始可用。
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey, bool writable);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, bool writable);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, bool writable);
member this.CreateSubKey : string * bool -> Microsoft.Win32.RegistryKey
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CreateSubKey : string * bool -> Microsoft.Win32.RegistryKey
Public Function CreateSubKey (subkey As String, writable As Boolean) As RegistryKey
参数
- subkey
- String
要创建或打开的子项的名称或路径。 此字符串不区分大小写。
- writable
- Boolean
如果新子项可写入,则为 true
;否则为 false
。
返回
新创建的子项,如果操作失败,则为 null
。 如果为 subkey
指定了长度为零的字符串,则返回当前 RegistryKey 对象。
- 属性
例外
subkey
为 null
。
用户没有创建或打开注册表项所需的权限。
无法写入当前 RegistryKey;例如,它未作为可写入项打开,或用户没有必要的访问权限。
注解
若要执行此操作,用户必须在注册表层次结构中具有此级别和更低级别的权限。
注意
不要以恶意程序可能创建数千个无意义的子项或键/值对的方式公开 RegistryKey 对象。 例如,不允许调用方输入任意键或值。
若要使用 CreateSubKey 方法,必须具有 类的 RegistryKey 实例。 若要获取 的 RegistryKey实例,请使用 类的静态成员之 Registry 一。
适用于
CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)
- Source:
- RegistryKey.cs
使用指定的权限检查选项和注册表安全性创建一个新子项或打开一个现有子项以进行写访问。
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck, System::Security::AccessControl::RegistrySecurity ^ registrySecurity);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistrySecurity registrySecurity);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistrySecurity? registrySecurity);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistrySecurity registrySecurity);
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * System.Security.AccessControl.RegistrySecurity -> Microsoft.Win32.RegistryKey
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * System.Security.AccessControl.RegistrySecurity -> Microsoft.Win32.RegistryKey
Public Function CreateSubKey (subkey As String, permissionCheck As RegistryKeyPermissionCheck, registrySecurity As RegistrySecurity) As RegistryKey
参数
- subkey
- String
要创建或打开的子项的名称或路径。 此字符串不区分大小写。
- permissionCheck
- RegistryKeyPermissionCheck
用于指定打开该项是进行读取还是读取/写入访问的枚举值之一。
- registrySecurity
- RegistrySecurity
新项的访问控制安全性。
返回
新创建的子项,如果操作失败,则为 null
。 如果为 subkey
指定了长度为零的字符串,则返回当前 RegistryKey 对象。
- 属性
例外
subkey
为 null
。
用户没有创建或打开注册表项所需的权限。
permissionCheck
包含无效值。
调用此方法时所针对的 RegistryKey 已关闭(无法访问已关闭的项)。
无法写入当前 RegistryKey;例如,它未作为可写入项打开,或用户没有必要的访问权限。
注解
方法 CreateSubKey 创建具有 参数指定的访问控制的 registrySecurity
注册表项。 RegistryKey返回的对象表示注册表项,但该对象不受 参数中指定的registrySecurity
访问控制的限制。
如果 permissionCheck
为 RegistryKeyPermissionCheck.ReadWriteSubTree,则打开密钥进行读/写访问。 如果 permissionCheck
为 RegistryKeyPermissionCheck.ReadSubTree,则打开密钥以进行读取访问。
为了向后兼容,如果 permissionCheck
RegistryKeyPermissionCheck.Default 为 ,则打开密钥进行读取和写入,并且父键也具有 RegistryKeyPermissionCheck.Default。 如果父键具有任何其他设置,则读/写状态由父键的设置控制。
若要执行此操作,用户必须在注册表层次结构中具有此级别和更低级别的权限。
注意
不要以恶意程序可能创建数千个无意义的子项或键/值对的方式公开 RegistryKey 对象。 例如,不允许调用方输入任意键或值。
若要使用 OpenSubKey 方法,必须具有 类的 RegistryKey 实例。 若要获取 的 RegistryKey实例,请使用 类的静态成员之 Registry 一。
另请参阅
适用于
CreateSubKey(String, Boolean, RegistryOptions)
- Source:
- RegistryKey.cs
创建一个新子项或打开具有指定访问权限的现有子项。 从 .NET Framework 4.6 开始可用。
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey, bool writable, Microsoft::Win32::RegistryOptions options);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, bool writable, Microsoft.Win32.RegistryOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, bool writable, Microsoft.Win32.RegistryOptions options);
member this.CreateSubKey : string * bool * Microsoft.Win32.RegistryOptions -> Microsoft.Win32.RegistryKey
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CreateSubKey : string * bool * Microsoft.Win32.RegistryOptions -> Microsoft.Win32.RegistryKey
Public Function CreateSubKey (subkey As String, writable As Boolean, options As RegistryOptions) As RegistryKey
参数
- subkey
- String
要创建或打开的子项的名称或路径。 此字符串不区分大小写。
- writable
- Boolean
如果新子项可写入,则为 true
;否则为 false
。
- options
- RegistryOptions
要使用的注册表选项。
返回
新创建的子项,如果操作失败,则为 null
。 如果为 subkey
指定了长度为零的字符串,则返回当前 RegistryKey 对象。
- 属性
例外
subkey
为 null
。
options
未指定有效的 选项。
用户没有创建或打开注册表项所需的权限。
无法写入当前 RegistryKey;例如,它未作为可写入项打开,或用户没有必要的访问权限。
注解
若要执行此操作,用户必须在注册表层次结构中具有此级别和更低级别的权限。
注意
不要以恶意程序可能创建数千个无意义的子项或键/值对的方式公开 RegistryKey 对象。 例如,不允许调用方输入任意键或值。
若要使用 CreateSubKey 方法,必须具有 类的 RegistryKey 实例。 若要获取 的 RegistryKey实例,请使用 类的静态成员之 Registry 一。
适用于
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)
- Source:
- RegistryKey.cs
使用指定的权限检查和注册表选项,创建或打开一个用于写访问的子项。
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck, Microsoft::Win32::RegistryOptions registryOptions);
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck, Microsoft::Win32::RegistryOptions options);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, Microsoft.Win32.RegistryOptions registryOptions);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, Microsoft.Win32.RegistryOptions options);
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * Microsoft.Win32.RegistryOptions -> Microsoft.Win32.RegistryKey
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * Microsoft.Win32.RegistryOptions -> Microsoft.Win32.RegistryKey
Public Function CreateSubKey (subkey As String, permissionCheck As RegistryKeyPermissionCheck, registryOptions As RegistryOptions) As RegistryKey
Public Function CreateSubKey (subkey As String, permissionCheck As RegistryKeyPermissionCheck, options As RegistryOptions) As RegistryKey
参数
- subkey
- String
要创建或打开的子项的名称或路径。
- permissionCheck
- RegistryKeyPermissionCheck
用于指定打开该项是进行读取还是读取/写入访问的枚举值之一。
- registryOptionsoptions
- RegistryOptions
要使用的注册表选项;例如,用于创建可变键的注册表选项。
返回
新创建的子项,如果操作失败,则为 null
。
- 属性
例外
subkey
为 null
。
当前的 RegistryKey 对象已关闭(无法访问关闭的项)。
无法写入当前 RegistryKey 对象;例如,它未作为可写入项打开,或用户不具有所需的访问权限。
用户没有创建或打开注册表项所需的权限。
注解
若要获取当前 RegistryKey 对象,请为 subkey
指定空字符串 (“”) 。
适用于
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)
- Source:
- RegistryKey.cs
使用指定的权限检查选项、注册表选项和注册表安全性,创建或打开一个用于写访问的子项。
public:
Microsoft::Win32::RegistryKey ^ CreateSubKey(System::String ^ subkey, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck, Microsoft::Win32::RegistryOptions registryOptions, System::Security::AccessControl::RegistrySecurity ^ registrySecurity);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, Microsoft.Win32.RegistryOptions registryOptions, System.Security.AccessControl.RegistrySecurity registrySecurity);
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, Microsoft.Win32.RegistryOptions registryOptions, System.Security.AccessControl.RegistrySecurity? registrySecurity);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, Microsoft.Win32.RegistryOptions registryOptions, System.Security.AccessControl.RegistrySecurity registrySecurity);
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * Microsoft.Win32.RegistryOptions * System.Security.AccessControl.RegistrySecurity -> Microsoft.Win32.RegistryKey
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CreateSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * Microsoft.Win32.RegistryOptions * System.Security.AccessControl.RegistrySecurity -> Microsoft.Win32.RegistryKey
Public Function CreateSubKey (subkey As String, permissionCheck As RegistryKeyPermissionCheck, registryOptions As RegistryOptions, registrySecurity As RegistrySecurity) As RegistryKey
参数
- subkey
- String
要创建或打开的子项的名称或路径。
- permissionCheck
- RegistryKeyPermissionCheck
用于指定打开该项是进行读取还是读取/写入访问的枚举值之一。
- registryOptions
- RegistryOptions
要使用的注册表选项。
- registrySecurity
- RegistrySecurity
新子项的访问控制安全性。
返回
新创建的子项,如果操作失败,则为 null
。
- 属性
例外
subkey
为 null
。
当前的 RegistryKey 对象被关闭。 无法访问已关闭的项。
无法写入当前 RegistryKey 对象;例如,它未作为可写入项打开,或用户不具有所需的访问权限。
用户没有创建或打开注册表项所需的权限。
注解
若要获取当前 RegistryKey 对象,请为 subkey
指定空字符串 (“”) 。