Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст.
Перевод
Текст оригинала
Эта тема еще не получила оценку Оценить эту тему

Registry - класс

Предоставляет объекты RegistryKey, представляющие корневые разделы в реестре Windows, и методы static для доступа к парам "раздел-значение".

System.Object
  Microsoft.Win32.Registry

Пространство имен:  Microsoft.Win32
Сборка:  mscorlib (в mscorlib.dll)
[ComVisibleAttribute(true)]
public static class Registry

Тип Registry предоставляет следующие члены.

  Имя Описание
Открытый метод Статический член GetValue Извлекает значение, связанное с указанным именем, в указанном разделе реестра. Если имя не найдено в указанном разделе, возвращает предоставленное значение по умолчанию или значение Nothing, если указанный раздел не существует.
Открытый метод Статический член SetValue(String, String, Object) Задает указанное значение пары "имя-значение" для указанного раздела реестра. Если указанный раздел не существует, он будет создан.
Открытый метод Статический член SetValue(String, String, Object, RegistryValueKind) Задает пару "имя-значение" для указанного раздела реестра, используя указанный тип данных реестра. Если указанный раздел не существует, он будет создан.
В начало страницы
  Имя Описание
Открытое поле Статический член ClassesRoot Определяет типы (или классы) документов и свойства, связанные с этими типами. Это поле считывает базовый раздел реестра Windows HKEY_CLASSES_ROOT.
Открытое поле Статический член CurrentConfig Содержит сведения о конфигурации, относящиеся к оборудованию, не связанному с конкретным пользователем. Это поле считывает базовый раздел реестра Windows HKEY_CURRENT_CONFIG.
Открытое поле Статический член CurrentUser Содержит сведения о текущих пользовательских параметрах. Это поле считывает базовый раздел реестра Windows HKEY_CURRENT_USER.
Открытое поле Статический член DynData Устаревшее. Содержит динамические данные реестра. Это поле считывает базовый раздел реестра Windows HKEY_DYN_DATA.
Открытое поле Статический член LocalMachine Содержит данные о конфигурации для локального компьютера. Это поле считывает базовый раздел реестра Windows HKEY_LOCAL_MACHINE.
Открытое поле Статический член PerformanceData Содержит данные о производительности для компонентов программного обеспечения. Это поле считывает базовый раздел реестра Windows HKEY_PERFORMANCE_DATA.
Открытое поле Статический член Users Содержит сведения о стандартной пользовательской конфигурации. Это поле считывает базовый раздел реестра Windows HKEY_USERS.
В начало страницы

Этот класс предоставляет набор стандартных корневых разделов, находящихся в реестре компьютеров, работающих под управлением Windows. Реестр является средством хранения сведений о приложениях, пользователях и стандартных системных параметрах. Например, приложения используют реестр для хранения сведений, которые необходимо сохранить после закрытия приложения и к которым необходимо получать доступ при перезагрузке приложения. Например, можно сохранять цветовые настройки, положение или размер окна. Для разных пользователей эти сведения могут сохраняться в различных местах реестра.

Базовые (корневые) экземпляры RegistryKey, которые показываются классом Registry, создают схему базового механизма хранения в реестре вложенных разделов и значений. Все разделы доступны только для чтения, так как реестр зависит от их существования. Класс Registry предоставляет доступ к следующим разделам:

CurrentUser

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

LocalMachine

Сохраняет сведения о конфигурации для локального компьютера.

ClassesRoot

Сохраняет сведения о типах (и классах) и их свойствах.

Users

Сохраняет сведения о стандартной пользовательской конфигурации.

PerformanceData

Сохраняет сведения о производительности для программных компонентов.

CurrentConfig

Сохраняет сведения об оборудовании, не являющемся специфическим для пользователя.

DynData

Сохраняет динамические данные.

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

Аппаратные устройства могут помещать сведения в реестр автоматически, используя интерфейс Plug and Play. Программные средства установки драйверов устройства могут размещать сведения в реестре путем записи в стандартные интерфейсы API.

Статические методы для получения и установки значений

В платформе .NET Framework версии 2.0 класс Registry также содержит методы staticGetValue и SetValue для задания и получения значений разделов реестра. При каждом своем использовании эти методы открывают и закрывают разделы реестра, поэтому при работе с большим количеством значений их производительность ниже, чем у аналогичных методов класса RegistryKey.

Класс RegistryKey также предоставляет методы, позволяющие задать безопасность элементов управления доступом для разделов реестра, чтобы проверить тип данных значения перед его возвращением и для удаления ключей.

В данном разделе содержится два примера кода. В первом примере демонстрируются корневые разделы, а во втором — методы staticGetValue и SetValue.

Пример 1

В следующем примере кода показан способ получения вложенных разделов для раздела HKEY_USERS и печати их имен на экране. Метод OpenSubKey используется для создания экземпляра конкретного нужного вложенного раздела. Затем можно использовать другие операции в RegistryKey для выполнения действий с данным разделом.


using System;
using Microsoft.Win32;

class Reg {
    public static void Main() {

        // Create a RegistryKey, which will access the HKEY_USERS
        // key in the registry of this machine.
        RegistryKey rk = Registry.Users;

        // Print out the keys.
        PrintKeys(rk);
    }

    static void PrintKeys(RegistryKey rkey) {

        // Retrieve all the subkeys for the specified key.
        String [] names = rkey.GetSubKeyNames();

        int icount = 0;

        Console.WriteLine("Subkeys of " + rkey.Name);
        Console.WriteLine("-----------------------------------------------");

        // Print the contents of the array to the console.
        foreach (String s in names) {
            Console.WriteLine(s);

            // The following code puts a limit on the number
            // of keys displayed.  Comment it out to print the
            // complete list.
            icount++;
            if (icount >= 10)
                break;
        }
    }
}


Пример 2

В следующем примере кода создается раздел реестра, в котором сохраняются значения нескольких типов данных, а затем выполняется возвращение и отображение значений. В этом примере показывается сохранение и возвращение стандартных (безымянных) пар "имя-значение", а также использование defaultValue, если пара "имя-значение" не существует.


using System;
using Microsoft.Win32;

public class Example
{
    public static void Main()
    {
        // The name of the key must include a valid root.
        const string userRoot = "HKEY_CURRENT_USER";
        const string subkey = "RegistrySetValueExample";
        const string keyName = userRoot + "\\" + subkey;

        // An int value can be stored without specifying the
        // registry data type, but long values will be stored
        // as strings unless you specify the type. Note that
        // the int is stored in the default name/value
        // pair.
        Registry.SetValue(keyName, "", 5280);
        Registry.SetValue(keyName, "TestLong", 12345678901234,
            RegistryValueKind.QWord);

        // Strings with expandable environment variables are
        // stored as ordinary strings unless you specify the
        // data type.
        Registry.SetValue(keyName, "TestExpand", "My path: %path%");
        Registry.SetValue(keyName, "TestExpand2", "My path: %path%",
            RegistryValueKind.ExpandString);

        // Arrays of strings are stored automatically as 
        // MultiString. Similarly, arrays of Byte are stored
        // automatically as Binary.
        string[] strings = {"One", "Two", "Three"};
        Registry.SetValue(keyName, "TestArray", strings);

        // Your default value is returned if the name/value pair
        // does not exist.
        string noSuch = (string) Registry.GetValue(keyName, 
            "NoSuchName",
            "Return this default if NoSuchName does not exist.");
        Console.WriteLine("\r\nNoSuchName: {0}", noSuch);

        // Retrieve the int and long values, specifying 
        // numeric default values in case the name/value pairs
        // do not exist. The int value is retrieved from the
        // default (nameless) name/value pair for the key.
        int tInteger = (int) Registry.GetValue(keyName, "", -1);
        Console.WriteLine("(Default): {0}", tInteger);
        long tLong = (long) Registry.GetValue(keyName, "TestLong",
            long.MinValue);
        Console.WriteLine("TestLong: {0}", tLong);

        // When retrieving a MultiString value, you can specify
        // an array for the default return value. 
        string[] tArray = (string[]) Registry.GetValue(keyName,
            "TestArray",
            new string[] {"Default if TestArray does not exist."});
        for(int i=0; i<tArray.Length; i++)
        {
            Console.WriteLine("TestArray({0}): {1}", i, tArray[i]);
        }

        // A string with embedded environment variables is not
        // expanded if it was stored as an ordinary string.
        string tExpand = (string) Registry.GetValue(keyName,
             "TestExpand", 
             "Default if TestExpand does not exist.");
        Console.WriteLine("TestExpand: {0}", tExpand);

        // A string stored as ExpandString is expanded.
        string tExpand2 = (string) Registry.GetValue(keyName,
            "TestExpand2",
            "Default if TestExpand2 does not exist.");
        Console.WriteLine("TestExpand2: {0}...",
            tExpand2.Substring(0, 40));

        Console.WriteLine("\r\nUse the registry editor to examine the key.");
        Console.WriteLine("Press the Enter key to delete the key.");
        Console.ReadLine();
        Registry.CurrentUser.DeleteSubKey(subkey);
    }
}
//
// This code example produces output similar to the following:
//
//NoSuchName: Return this default if NoSuchName does not exist.
//(Default): 5280
//TestLong: 12345678901234
//TestArray(0): One
//TestArray(1): Two
//TestArray(2): Three
//TestExpand: My path: %path%
//TestExpand2: My path: D:\Program Files\Microsoft.NET\...
//
//Use the registry editor to examine the key.
//Press the Enter key to delete the key.


.NET Framework

Поддерживается в версиях: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 SP1

Windows 7, Windows Vista с пакетом обновления 1 (SP1) или выше, Windows XP с пакетом обновления 3 (SP3), 64-разрядный выпуск Windows XP с пакетом обновления 2 (SP2), Windows Server 2008 (Server Core не поддерживается), Windows Server 2008 R2 (Server Core поддерживается с пакетом обновления 1 (SP1) или более поздним), Windows Server 2003 SP2

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.
Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
Считаете ли вы эту страницу полезной?
(Осталось символов: 1500)
Содержимое сообщества Добавить