Прочитать на английском

Поделиться через


RegistryKey.CreateSubKey Метод

Определение

Создает новый подраздел или открывает существующий.

Перегрузки

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)

Исходный код:
RegistryKey.cs

Создает новый вложенный раздел или открывает существующий вложенный раздел с доступом на запись.

public Microsoft.Win32.RegistryKey CreateSubKey (string subkey);

Параметры

subkey
String

Имя или путь создаваемого или открываемого подраздела. В этой строке не учитывается регистр знаков.

Возвращаемое значение

Созданный подраздел или null в случае сбоя операции. Если в качестве значения subkey задана строка нулевой длины, возвращается текущий объект RegistryKey.

Исключения

subkey имеет значение null.

У пользователя нет разрешений, необходимых для создания или открытия раздела реестра.

Объект RegistryKey, для которого вызывается этот метод, закрыт (доступ к закрытым разделам невозможен).

Запись в объект RegistryKey невозможна, например, он не может быть открыт как раздел, доступный для записи, или у пользователя нет необходимых прав доступа.

Уровень вложенности превышает 510.

-или-

Произошла системная ошибка, например удаление раздела или попытка создать раздел в корне LocalMachine.

Примеры

В следующем примере кода показано, как создать подраздел в разделе HKEY_CURRENT_USER, управлять его содержимым, а затем удалить подраздел.

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();
        }
    }
}

Комментарии

Чтобы выполнить это действие, пользователь должен иметь разрешение на этом уровне и ниже в иерархии реестра.

Внимание!

Не предоставляйте объекты RegistryKey таким образом, чтобы вредоносная программа могла создавать тысячи бессмысленных подразделов или пар "ключ-значение". Например, не разрешайте вызывающим абонентам вводить произвольные ключи или значения.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5

CreateSubKey(String, RegistryKeyPermissionCheck)

Исходный код:
RegistryKey.cs

Создает новый вложенный раздел или открывает существующий вложенный раздел с доступом на запись, используя заданный вариант проверки разрешений.

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);

Параметры

subkey
String

Имя или путь создаваемого или открываемого подраздела. В этой строке не учитывается регистр знаков.

permissionCheck
RegistryKeyPermissionCheck

Одно из значений перечисления, определяющее, с какими правами открывается раздел: только для чтения или для чтения и записи.

Возвращаемое значение

Созданный подраздел или null в случае сбоя операции. Если в качестве значения subkey задана строка нулевой длины, возвращается текущий объект RegistryKey.

Атрибуты

Исключения

subkey имеет значение null.

У пользователя нет разрешений, необходимых для создания или открытия раздела реестра.

Параметр permissionCheck содержит недопустимое значение.

Объект RegistryKey, для которого вызывается этот метод, закрыт (доступ к закрытым разделам невозможен).

Запись в объект RegistryKey невозможна, например, он не может быть открыт как раздел, доступный для записи, или у пользователя нет необходимых прав доступа.

Уровень вложенности превышает 510.

-или-

Произошла системная ошибка, например удаление раздела или попытка создать раздел в корне LocalMachine.

Комментарии

Чтобы выполнить это действие, пользователь должен иметь разрешение на этом уровне и ниже в иерархии реестра.

Внимание!

Не предоставляйте объекты RegistryKey таким образом, чтобы вредоносная программа могла создавать тысячи бессмысленных подразделов или пар "ключ-значение". Например, не разрешайте вызывающим абонентам вводить произвольные ключи или значения.

Чтобы использовать OpenSubKey метод , необходимо иметь экземпляр RegistryKey класса . Чтобы получить экземпляр RegistryKey, используйте один из статических Registry членов класса .

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5

CreateSubKey(String, Boolean)

Исходный код:
RegistryKey.cs

Создает новый подраздел или открывает существующий с указанным доступом. Доступно начиная с .NET Framework 4.6.

public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, bool writable);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, bool writable);

Параметры

subkey
String

Имя или путь создаваемого или открываемого подраздела. В этой строке не учитывается регистр знаков.

writable
Boolean

Значение true указывает, что новый подраздел доступен для записи; в противном случае значение false.

Возвращаемое значение

Созданный подраздел или null в случае сбоя операции. Если в качестве значения subkey задана строка нулевой длины, возвращается текущий объект RegistryKey.

Атрибуты

Исключения

subkey имеет значение null.

У пользователя нет разрешений, необходимых для создания или открытия раздела реестра.

Невозможно выполнить запись в текущий объект RegistryKey; например, он не был открыт как раздел, доступный для записи, или у пользователя нет нужных прав доступа.

Уровень вложенности превышает 510.

-или-

Произошла системная ошибка, например удаление раздела или попытка создать раздел в корне LocalMachine.

Комментарии

Чтобы выполнить это действие, пользователь должен иметь разрешение на этом уровне и ниже в иерархии реестра.

Внимание!

Не предоставляйте объекты RegistryKey таким образом, чтобы вредоносная программа могла создавать тысячи бессмысленных подразделов или пар "ключ-значение". Например, не разрешайте вызывающим абонентам вводить произвольные ключи или значения.

Чтобы использовать CreateSubKey метод , необходимо иметь экземпляр RegistryKey класса . Чтобы получить экземпляр RegistryKey, используйте один из статических Registry членов класса .

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, 6, 7, 8, 9
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5

CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)

Исходный код:
RegistryKey.cs

Создает новый вложенный раздел или открывает существующий вложенный раздел с доступом на запись, используя заданный вариант проверки разрешений и безопасности реестра.

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);

Параметры

subkey
String

Имя или путь создаваемого или открываемого подраздела. В этой строке не учитывается регистр знаков.

permissionCheck
RegistryKeyPermissionCheck

Одно из значений перечисления, определяющее, с какими правами открывается раздел: только для чтения или для чтения и записи.

registrySecurity
RegistrySecurity

Безопасность управления доступом для нового раздела.

Возвращаемое значение

Созданный подраздел или null в случае сбоя операции. Если в качестве значения subkey задана строка нулевой длины, возвращается текущий объект RegistryKey.

Атрибуты

Исключения

subkey имеет значение null.

У пользователя нет разрешений, необходимых для создания или открытия раздела реестра.

Параметр permissionCheck содержит недопустимое значение.

Объект RegistryKey, для которого вызывается этот метод, закрыт (доступ к закрытым разделам невозможен).

Невозможно выполнить запись в текущий объект RegistryKey; например, он не был открыт как раздел, доступный для записи, или у пользователя нет нужных прав доступа.

Уровень вложенности превышает 510.

-или-

Произошла системная ошибка, например удаление раздела или попытка создать раздел в корне LocalMachine.

Комментарии

Метод CreateSubKey создает раздел реестра с управлением доступом, заданным параметром registrySecurity . Возвращаемый RegistryKey объект представляет раздел реестра, но этот объект не ограничивается управлением доступом, указанным в параметре registrySecurity .

Если permissionCheck имеет значение RegistryKeyPermissionCheck.ReadWriteSubTree, ключ открывается для чтения и записи. Если permissionCheck имеет значение RegistryKeyPermissionCheck.ReadSubTree, ключ открывается для доступа на чтение.

Для обеспечения обратной совместимости ключ открывается для чтения и записи, если permissionCheck имеет значение RegistryKeyPermissionCheck.Default и родительский ключ также имеет RegistryKeyPermissionCheck.Defaultзначение . Если родительский ключ имеет какой-либо другой параметр, состояние чтения и записи управляется параметром родительского ключа.

Чтобы выполнить это действие, пользователь должен иметь разрешения на этом уровне и ниже в иерархии реестра.

Внимание!

Не предоставляйте объекты RegistryKey таким образом, чтобы вредоносная программа могла создавать тысячи бессмысленных подразделов или пар "ключ-значение". Например, не разрешайте вызывающим абонентам вводить произвольные ключи или значения.

Чтобы использовать OpenSubKey метод , необходимо иметь экземпляр RegistryKey класса . Чтобы получить экземпляр RegistryKey, используйте один из статических Registry членов класса .

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5

CreateSubKey(String, Boolean, RegistryOptions)

Исходный код:
RegistryKey.cs

Создает новый подраздел или открывает существующий с указанным доступом. Доступно начиная с .NET Framework 4.6.

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);

Параметры

subkey
String

Имя или путь создаваемого или открываемого подраздела. В этой строке не учитывается регистр знаков.

writable
Boolean

Значение true указывает, что новый подраздел доступен для записи; в противном случае значение false.

options
RegistryOptions

Параметр реестра для использования.

Возвращаемое значение

Созданный подраздел или null в случае сбоя операции. Если в качестве значения subkey задана строка нулевой длины, возвращается текущий объект RegistryKey.

Атрибуты

Исключения

subkey имеет значение null.

options параметр не указывает допустимый параметр.

У пользователя нет разрешений, необходимых для создания или открытия раздела реестра.

Невозможно выполнить запись в текущий объект RegistryKey; например, он не был открыт как раздел, доступный для записи, или у пользователя нет нужных прав доступа.

Уровень вложенности превышает 510.

-или-

Произошла системная ошибка, например удаление раздела или попытка создать раздел в корне LocalMachine.

Комментарии

Чтобы выполнить это действие, пользователь должен иметь разрешение на этом уровне и ниже в иерархии реестра.

Внимание!

Не предоставляйте RegistryKey объекты таким образом, чтобы вредоносная программа могла создать тысячи бессмысленных подразделов или пар "ключ-значение". Например, не разрешайте вызывающим абонентам вводить произвольные ключи или значения.

Чтобы использовать CreateSubKey метод , необходимо иметь экземпляр RegistryKey класса . Чтобы получить экземпляр RegistryKey, используйте один из статических Registry членов класса .

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, 6, 7, 8, 9
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)

Исходный код:
RegistryKey.cs

Создает подраздел или открывает подраздел с доступом на запись, используя заданные параметры проверки разрешений и параметры реестра.

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);

Параметры

subkey
String

Имя или путь создаваемого или открываемого подраздела.

permissionCheck
RegistryKeyPermissionCheck

Одно из значений перечисления, определяющее, с какими правами открывается раздел: только для чтения или для чтения и записи.

registryOptionsoptions
RegistryOptions

Используемый параметр реестра; например, для создания временного ключа.

Возвращаемое значение

Созданный подраздел или null в случае сбоя операции.

Атрибуты

Исключения

subkey имеет значение null.

Текущий объект RegistryKey закрыт (к закрытым ключам доступ отсутствует).

Запись в текущий объект RegistryKey невозможна; например, он не может быть открыт как раздел, доступный для записи, или у пользователя нет необходимых прав доступа.

Уровень вложенности превышает 510.

-или-

Произошла системная ошибка, например удаление раздела или попытка создания раздела в корне LocalMachine.

У пользователя нет разрешений, необходимых для создания или открытия раздела реестра.

Комментарии

Чтобы получить текущий RegistryKey объект, укажите пустую строку ("") для subkey.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)

Исходный код:
RegistryKey.cs

Создает подраздел или подраздел с доступом на запись, используя заданные параметры проверки разрешений, параметры реестра и безопасности реестра.

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);

Параметры

subkey
String

Имя или путь создаваемого или открываемого подраздела.

permissionCheck
RegistryKeyPermissionCheck

Одно из значений перечисления, определяющее, с какими правами открывается раздел: только для чтения или для чтения и записи.

registryOptions
RegistryOptions

Параметр реестра для использования.

registrySecurity
RegistrySecurity

Безопасность управления доступом для нового подраздела.

Возвращаемое значение

Созданный подраздел или null в случае сбоя операции.

Атрибуты

Исключения

subkey имеет значение null.

Текущий объект RegistryKey закрыт. К закрытым ключам доступ отсутствует.

Запись в текущий объект RegistryKey невозможна; например, он не может быть открыт как раздел, доступный для записи, или у пользователя нет необходимых прав доступа.

Уровень вложенности превышает 510.

-или-

Произошла системная ошибка, например удаление раздела или попытка создания раздела в корне LocalMachine.

У пользователя нет разрешений, необходимых для создания или открытия раздела реестра.

Комментарии

Чтобы получить текущий RegistryKey объект, укажите пустую строку ("") для subkey.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5