Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с реестром в С# 
:(
    Опции темы
bc0der
Дата 8.7.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.5.2006

Репутация: нет
Всего: нет



Привет , вот написал статейку по работе с реестром в .NET (на С#) , поскольку сам интересовался программированием реестра в .NET .

Оцените : www.csharpcoder.narod.ru/reg.pdf  

Это сообщение отредактировал(а) bc0der - 8.7.2006, 20:35
PM MAIL ICQ   Вверх
mr.DUDA
Дата 8.7.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Зачем в пдф ?  smile  


--------------------
user posted image
PM MAIL WWW   Вверх
Void
Дата 8.7.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



mr.DUDA, а что не так? 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Exception
Дата 8.7.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Выложи сюда в нормальном виде - больше народу почитает smile
P.S. Не люблю я реестр... Конфиги рулят. 
PM   Вверх
mr.DUDA
Дата 8.7.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Void @  8.7.2006,  22:39 Найти цитируемый пост)
mr.DUDA, а что не так? 

(оффтоп) у меня пдф в фотошопе по дефолту открывает  smile  


--------------------
user posted image
PM MAIL WWW   Вверх
VisualProgrammerNET
Дата 9.7.2006, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



?  smile  


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
bc0der
Дата 9.7.2006, 00:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.5.2006

Репутация: нет
Всего: нет



Вот , теперь можно и здесь почитать !!!  smile 

Программироние реестра средствами .NET на языке C# .

Что такое реестр ? 
Реестр действует как центральное хранилище сведений об операционной системе и приложений компьютера. Например, приложения используют реестр для хранения сведений, которые необходимосохранить при закрытии приложения и к которым при перезагрузке приложения необходимо получить доступ. Например, имеется возможность сохранять цветовые настройки, положение или размер окна. Каждый пользователь имеет возможность сохранять эти сведения для себя в определенном месте реестра.
Основные классы для работы с реестром в .NET – Registry и RegistryKey , которые находятся в пространстве имён Microsoft.Win32 .

Registry содержит открытые (статические) поля которые предоставляют доступ к соотв. Ключам реестра :
LocalMachine – Данные о конфигурации для локального компьютера. Это поле считывает базовый ключ реестра HKEY_LOCAL_MACHINE. 

ClassesRoot – Определение типов (или классов) документов и свойств, связанных с этими типами. Это поле считывает базовый ключ реестра Windows HKEY_CLASSES_ROOT.

CurrentConfig – Сведения о конфигурации, относящиеся к оборудованию, которое не имеет прямого отношения к пользователю. Это поле считывает базовый ключ реестра HKEY_CURRENT_CONFIG.

Users – Сведения о стандартной пользовательской конфигурации. Это поле считывает базовый ключ реестра HKEY_USERS.

CurrentUser – Сведения о текущих пользовательских привилегиях. Это поле считывает базовый ключ реестра HKEY_CURRENT_USER.

PerformanceData - Сведения о рабочих характеристиках для программных компонентов. Это поле считывает базовый ключ реестра HKEY_PERFORMANCE_DATA.

DynData - Динамические данные реестра. Это поле считывает базовый ключ реестра HKEY_DYN_DATA. (Windown 9x/ME) .

Теперь рассмотри класс RegistryKey , который является базовой единицей организации в реестре и может быть сравнен с папками в Windows Explorer.

Основные свойства RegistryKey :

Name - Извлечение имени ключа. .
SubKeyCount - Извлечение числа подключей на базовом уровне для текущего ключа.
ValueCount - Извлечение числа значений в ключе.


Методы :

Close - Закрытие ключа и его сброс на диск, если изменено содержание.
CreateSubKey - Создание нового подключа или открытие существующего подключа. Строка subKey не учитывается в регистре.
DeleteSubKey - Перегружен. Удаление заданного подключа. Строка subKey не учитывается в регистре.
DeleteSubKeyTree - Удаление подключа и дочерних подключей рекурсивно. Строка subKey не учитывается в регистре.
DeleteValueПерегружен. Удаление заданного значения из этого ключа.
Flush - Запись всех атрибутов заданного открытого ключа реестра в реестр.
GetSubKeyNames - Извлечение массива строк, который содержит все имена подключей.
GetValue - Перегружен. Извлечение заданного значения.
GetValueNames - Извлечение массива строк, содержащего все имена значений, связанных с этим ключом.
OpenRemoteBaseKey - Открытие нового RegistryKey, который представляет запрошенный ключ на чужом компьютере.
OpenSubKey - Перегружен. Извлечение заданного подключа с доступом для записи.
SetValue - Установка заданного значения.

Ну вот , всё что нужно знать перечислил , теперь можно попробовать что-нибудь записать в реестр и прочитать из него .

Допустим , мы хотим чтобы при выходе из программы сохранялся размер окна (формы) , а при запуске программы , окно становилось таким , какое было перед закрытием .

В деструктор формы пишем код :

Код

protected override void Dispose(bool disposing)
{
            
///////////////////// Вот это добавили //////////////////////////////////////
   try
   {

    RegistryKey key = Registry.CurrentUser.OpenSubKey("Software", true); 
// Открыли папку , true означает - хотим ли мы записывать в этот раздел 
// реестра ?
      RegistryKey wKey = key.CreateSubKey("RegistryTesting"); 
// Создали новую папку в реестре
wKey.SetValue("FormWidth", this.Size.Width);
wKey.SetValue("FormHeight", this.Size.Height);
// Здесь мы создали 2 ключа в которых сохранили размер формы
      // MessageBox.Show("Параметры сохранены .");

    }
    catch(System.Exception err)
    {
MessageBox.Show("Произошла ошибка при сохранении параметров : " + err.Message);
    }

////////////////////////////////////////////////////////////////////////////
    if (disposing && (components != null))
     {
          components.Dispose();
     }
     
base.Dispose(disposing);
}


*Примечание : Если вы пишите свою программу в Visual Studio 2005 , тогда не забудьте добавить в модуль с деструктором (Имя_Формы.Designer.cs) эти директивы :

Код

using Microsoft.Win32;
using System.Windows.Forms;


Ну вот параметры формы сохранились , в этом легко убедиться если запустить regedit и посмотреть раздел HKEY_CURRENT_USER\Software\RegistryTesting .

Теперь сделаем так чтобы форма восстанавливала свои размеры при загрузке .
В событие формы OnLoad пишем такой код :

Код

private void frmMain_Load(object sender, EventArgs e)
{
try
      {

          RegistryKey key = Registry.CurrentUser;
          key = key.OpenSubKey("Software\\RegistryTesting");
          System.Object w = key.GetValue("FormWidth");
          System.Object h = key.GetValue("FormHeight");
          // Получили значения ключей и теперь применяем их к форме
          this.Width = (int)w;
          this.Height = (int)h;
          // MessageBox.Show("Форма восстановлена .");

       }
    catch(System.Exception err)
    {
MessageBox.Show("Произошла ошибка при загрузке параметров "+err.Message);
    }

}


Теперь можно запустить программу и посмотреть как это работает .

Чтобы удалить все параметры из реестра , достаточно удалить папку RegistryTesting вызвав метод DeleteSubKey : 

Код

RegistryKey key = Registry.CurrentUser.OpenSubKey("Software", true);
key.DeleteSubKey("RegistryTesting");


Ну вот и всё, теперь вы можете писать свои программы по работе с реестром , пользуясь основными свойствами и методами классов Registry и RegistryKey . Надеюсь эта статья не оказалась напрасной . 
 
PM MAIL ICQ   Вверх
LastLame
Дата 23.7.2006, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



bc0der спасибо за статью. Компактная, и все по делу. Как раз искал информацию по работе с реестром в c#.  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.