Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. |
Перевод
Текст оригинала
|
Registry - класс
Предоставляет объекты RegistryKey, представляющие корневые разделы в реестре Windows, и методы static для доступа к парам "раздел-значение".
Сборка: mscorlib (в mscorlib.dll)
Тип 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 предоставляет доступ к следующим разделам:
Определив корневой раздел реестра, в котором необходимо сохранять и из которого необходимо извлекать сведения, можно использовать класс 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.
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.
