Skilful
08.04.2012, 18:29
Работа с реестром C#
В данной статье пойдет речь о том, как можно работать с реестром.
Как сделать Автозапуск программы; Как сделать Сохранение параметров программы; Как делать Добавлять и удалять dll’ки из реестра – с#.
Что нам потребуется:
- Microsoft Visual Studio 2010
- Начальные знания c#
- Желание
Как сделать Автозапуск программы (по включению Компьютера):
Шаг 1. Добавляем ссылку на библиотеку (в шапке главного файла формы):
using Microsoft.Win32;
Шаг 2. Теперь создаем 2 действия (Открытие формы и Закрытие)
- Открытие формы:
Двойным щелчком левой кнопки мыши нажимаем на свободное формы.
- Закрытие формы:
После того, как сделали "Открытие формы" ниже вставляем:
private void Form1_Closing(object sender, EventArgs e)
{
}
Теперь открываем файл "Имя формы.Designer.cs" (Чаще всего - это "Form1.Designer.cs")
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Там вы найдете:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Потом вставляем вот это(сюда [Ссылки могут видеть только зарегистрированные и активированные пользователи] ):
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this. Form1_Closing);
Это мы создали действие при закрытии формы.
Шаг 3. - Теперь возвращаемся в главный файл Формы 1, (Form1.cs), где мы вставляли пред код.
После этого кода, вставляем вот этот:
void AutoRunForm(bool Run)
{
/* Нам нужно Создать запись в:
* HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Run
*/
string NameProgram = "Ololosh";//Название должно совпадать с выходным файлом Проекта. !!БЕЗ *.exe
try
{
// Создать запись в реестре
RegistryKey regFirst = Registry.CurrentUser;//Получение адреса HKEY_CURRENT_USER
//Поиск каждого раздела, в итоге должны попасть в \Run, где и запишем нашу программу
RegistryKey regsw = regFirst.OpenSubKey("Software", true);
RegistryKey regmc = regsw.OpenSubKey("Microsoft", true);
RegistryKey regwin = regmc.OpenSubKey("Windows", true);
RegistryKey regcv = regwin.OpenSubKey("CurrentVersion", true);
RegistryKey regrun = regcv.OpenSubKey("Run", true);
if (Run == true)
{
//Создает запись в реестре, в \Run (Запуск программ, по включению Windows)
regrun.SetValue(NameProgram, Application.ExecutablePath, RegistryValueKind.String);
}
else
{
//В случае "занятости" удаляет предыдущую запись
regrun.DeleteValue(NameProgram);
}
//Закрываем
regrun.Close();
regcv.Close();
regwin.Close();
regmc.Close();
regsw.Close();
regFirst.Close();
}
catch
{
ErrorMessage("Автор запуска программы");
}
}
const bool debugState = false;
public static void ErrorMessage(string message)//Служит для определения в каком месте - произошла ошибка. Конечно можно просто использовать MessBox, но мне так удобней
{
if(debugState == true)
MessageBox.Show("Ошибка : " + message);
}
Основные моменты я закомментировал в функции.
Шаг 4. - Теперь кидаем в функцию "Form1_Closing" вот это:
AutoRunForm(true);
т.е Должно получиться вот такое:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь расскажу как можно записывать настройки в реестр:
Шаг 1. - Делаем (Первые два действия(Шаг 1. и Шаг 2.), из прошлого под гайда, т.е нужно добавить ссылку и сделать действия (закрытия/открытия формы))
Шаг 2. - Теперь в главный файл формы 1(чаще всего "Form1.cs") вставляем вот это:
void SaveOptionsinRegistry()
{
try
{
RegistryKey reg = Registry.CurrentUser;
RegistryKey regsw = reg.OpenSubKey("Software", true);
RegistryKey regprog = regsw.CreateSubKey("MySettingProg");//Название группы
//Я кинул на форму 1 textbox
//У вас будет по другому
//regprog.SetValue("Название",объект, RegistryValueKind.String);
regprog.SetValue("TextBox", textBox1.Text, RegistryValueKind.String);
regsw.Close();
reg.Close();
}
catch
{
ErrorMessage("Записи данных в реестр");
}
}
Шаг 3. - Если вы хотите, что бы данные сохранялись каждый раз, когда программу сохраняли, то делаем ( Шаг 1. из этого под гайда), затем вставляем в действие "Form1_Closing" вот это:
SaveOptionsinRegistry();
Должно получиться вот такое:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
А если хотите сохранять "по нажатию кнопки", то кидаем на форму кнопку, двойным щелчком правой кнопки мыши щелкаем по ней (создаем действие)
и кидаем в это действие:
SaveOptionsinRegistry();
Шаг 4. - Теперь сделаем загрузку данных.
в файле формы (Form1.cs) вставляем вот это:
void ReadOptionsInRegistry()//Читает сохранения в реестре
{
try
{
RegistryKey reg = Registry.CurrentUser;
RegistryKey regsw = reg.OpenSubKey("Software", false);
RegistryKey regprog = regsw.OpenSubKey("MySettingProg");
if (regprog != null)
{
string str;
str = (string)regprog.GetValue("TextBox");
globalstringtextbox = str;
regprog.Close();
}
regsw.Close();
reg.Close();
}
catch
{
ErrorMessage("Чтения данных из реестра");
}
}
Шаг 5. - Если вы хотите, что бы настройки читались каждый раз при открытии программы, то кидаем следующее (в функцию "Form1_Load"):
ReadOptionsInRegistry();
А если хотите читать настройки "по нажатию кнопки", то кидаем на форму кнопку, двойным щелчком правой кнопки мыши щелкаем по ней (создаем действие)
и кидаем в это действие:
ReadOptionsInRegistry();
Шаг 6. - Обновляем интерфейс.
В главный файл кидаем вот это:
void UpdateForm()
{
textBox1.Text = globalstringtextbox;
}
В "Form1_Load" добавляем:
UpdateForm();
Должно получиться:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Как заносить добавлять dll в реестр:
Шаг 1. - Добавляем Импортируемую библиотеку (в шапку файла формы. Form1.cs):
using Microsoft.Win32;
Шаг 2. - вставляем это (чуть ниже public Form1()):
//Используем самый легкий и простой способ определения битность системы
public static int BitnostSistem = IntPtr.Size;//Переменная равная 4 - 32x(битности). А в 64x - 8.
int bit32 = 4;//Windows ... 32(86)x
int bit64 = 8;//Windows ... 64x
Шаг 3. - Кидаем на форму кнопку (button1) , создаем действие нажатия кнопки (щелкаем по ней два раза левой кнопкой мыши). И в открывшемся окне и месте вставляем:
string NameDLL = "Ololosh.dll";//Название dll которую вносить в реестр
if (BitnostSistem == bit32)
{
//Ищем HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
RegistryKey regFirst = Registry.LocalMachine;
RegistryKey regsw = regFirst.OpenSubKey("SOFTWARE", true);
RegistryKey regmc = regsw.OpenSubKey("Microsoft", true);
RegistryKey regwin = regmc.OpenSubKey("Windows NT", true);
RegistryKey regcv = regwin.OpenSubKey("CurrentVersion", true);
RegistryKey regrun = regcv.OpenSubKey("Windows", true);
regrun.SetValue("AppInit_DLLs", NameDLL);
regrun.SetValue("LoadAppInit_DLLs", 1, RegistryValueKind.DWord);
}
if (BitnostSistem == bit64)
{
//Ищем HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ Windows NT\CurrentVersion\Windows
RegistryKey regFirst = Registry.LocalMachine;
RegistryKey regsw = regFirst.OpenSubKey("SOFTWARE", true);
RegistryKey regmc = regsw.OpenSubKey("Wow6432Node", true);
RegistryKey regwin = regmc.OpenSubKey("Microsoft", true);
RegistryKey regcv = regwin.OpenSubKey("Windows NT", true);
RegistryKey regrun = regcv.OpenSubKey("CurrentVersion", true);
RegistryKey rego = regcv.OpenSubKey("Windows", true);
rego.SetValue("AppInit_DLLs", NameDLL);
rego.SetValue("LoadAppInit_DLLs", 1, RegistryValueKind.DWord);
}
Шаг 4. - Если хотите удалить из реестра запись dll, то просто убираем название длл (оставляем пустое поле, Пример - string NameDLL = "";)
Вот в принципе и все, тестовый проект находится во вложении.
Всем удачных тестов, пробуйте, экспериментируйте.
В данной статье пойдет речь о том, как можно работать с реестром.
Как сделать Автозапуск программы; Как сделать Сохранение параметров программы; Как делать Добавлять и удалять dll’ки из реестра – с#.
Что нам потребуется:
- Microsoft Visual Studio 2010
- Начальные знания c#
- Желание
Как сделать Автозапуск программы (по включению Компьютера):
Шаг 1. Добавляем ссылку на библиотеку (в шапке главного файла формы):
using Microsoft.Win32;
Шаг 2. Теперь создаем 2 действия (Открытие формы и Закрытие)
- Открытие формы:
Двойным щелчком левой кнопки мыши нажимаем на свободное формы.
- Закрытие формы:
После того, как сделали "Открытие формы" ниже вставляем:
private void Form1_Closing(object sender, EventArgs e)
{
}
Теперь открываем файл "Имя формы.Designer.cs" (Чаще всего - это "Form1.Designer.cs")
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Там вы найдете:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Потом вставляем вот это(сюда [Ссылки могут видеть только зарегистрированные и активированные пользователи] ):
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this. Form1_Closing);
Это мы создали действие при закрытии формы.
Шаг 3. - Теперь возвращаемся в главный файл Формы 1, (Form1.cs), где мы вставляли пред код.
После этого кода, вставляем вот этот:
void AutoRunForm(bool Run)
{
/* Нам нужно Создать запись в:
* HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Run
*/
string NameProgram = "Ololosh";//Название должно совпадать с выходным файлом Проекта. !!БЕЗ *.exe
try
{
// Создать запись в реестре
RegistryKey regFirst = Registry.CurrentUser;//Получение адреса HKEY_CURRENT_USER
//Поиск каждого раздела, в итоге должны попасть в \Run, где и запишем нашу программу
RegistryKey regsw = regFirst.OpenSubKey("Software", true);
RegistryKey regmc = regsw.OpenSubKey("Microsoft", true);
RegistryKey regwin = regmc.OpenSubKey("Windows", true);
RegistryKey regcv = regwin.OpenSubKey("CurrentVersion", true);
RegistryKey regrun = regcv.OpenSubKey("Run", true);
if (Run == true)
{
//Создает запись в реестре, в \Run (Запуск программ, по включению Windows)
regrun.SetValue(NameProgram, Application.ExecutablePath, RegistryValueKind.String);
}
else
{
//В случае "занятости" удаляет предыдущую запись
regrun.DeleteValue(NameProgram);
}
//Закрываем
regrun.Close();
regcv.Close();
regwin.Close();
regmc.Close();
regsw.Close();
regFirst.Close();
}
catch
{
ErrorMessage("Автор запуска программы");
}
}
const bool debugState = false;
public static void ErrorMessage(string message)//Служит для определения в каком месте - произошла ошибка. Конечно можно просто использовать MessBox, но мне так удобней
{
if(debugState == true)
MessageBox.Show("Ошибка : " + message);
}
Основные моменты я закомментировал в функции.
Шаг 4. - Теперь кидаем в функцию "Form1_Closing" вот это:
AutoRunForm(true);
т.е Должно получиться вот такое:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь расскажу как можно записывать настройки в реестр:
Шаг 1. - Делаем (Первые два действия(Шаг 1. и Шаг 2.), из прошлого под гайда, т.е нужно добавить ссылку и сделать действия (закрытия/открытия формы))
Шаг 2. - Теперь в главный файл формы 1(чаще всего "Form1.cs") вставляем вот это:
void SaveOptionsinRegistry()
{
try
{
RegistryKey reg = Registry.CurrentUser;
RegistryKey regsw = reg.OpenSubKey("Software", true);
RegistryKey regprog = regsw.CreateSubKey("MySettingProg");//Название группы
//Я кинул на форму 1 textbox
//У вас будет по другому
//regprog.SetValue("Название",объект, RegistryValueKind.String);
regprog.SetValue("TextBox", textBox1.Text, RegistryValueKind.String);
regsw.Close();
reg.Close();
}
catch
{
ErrorMessage("Записи данных в реестр");
}
}
Шаг 3. - Если вы хотите, что бы данные сохранялись каждый раз, когда программу сохраняли, то делаем ( Шаг 1. из этого под гайда), затем вставляем в действие "Form1_Closing" вот это:
SaveOptionsinRegistry();
Должно получиться вот такое:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
А если хотите сохранять "по нажатию кнопки", то кидаем на форму кнопку, двойным щелчком правой кнопки мыши щелкаем по ней (создаем действие)
и кидаем в это действие:
SaveOptionsinRegistry();
Шаг 4. - Теперь сделаем загрузку данных.
в файле формы (Form1.cs) вставляем вот это:
void ReadOptionsInRegistry()//Читает сохранения в реестре
{
try
{
RegistryKey reg = Registry.CurrentUser;
RegistryKey regsw = reg.OpenSubKey("Software", false);
RegistryKey regprog = regsw.OpenSubKey("MySettingProg");
if (regprog != null)
{
string str;
str = (string)regprog.GetValue("TextBox");
globalstringtextbox = str;
regprog.Close();
}
regsw.Close();
reg.Close();
}
catch
{
ErrorMessage("Чтения данных из реестра");
}
}
Шаг 5. - Если вы хотите, что бы настройки читались каждый раз при открытии программы, то кидаем следующее (в функцию "Form1_Load"):
ReadOptionsInRegistry();
А если хотите читать настройки "по нажатию кнопки", то кидаем на форму кнопку, двойным щелчком правой кнопки мыши щелкаем по ней (создаем действие)
и кидаем в это действие:
ReadOptionsInRegistry();
Шаг 6. - Обновляем интерфейс.
В главный файл кидаем вот это:
void UpdateForm()
{
textBox1.Text = globalstringtextbox;
}
В "Form1_Load" добавляем:
UpdateForm();
Должно получиться:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Как заносить добавлять dll в реестр:
Шаг 1. - Добавляем Импортируемую библиотеку (в шапку файла формы. Form1.cs):
using Microsoft.Win32;
Шаг 2. - вставляем это (чуть ниже public Form1()):
//Используем самый легкий и простой способ определения битность системы
public static int BitnostSistem = IntPtr.Size;//Переменная равная 4 - 32x(битности). А в 64x - 8.
int bit32 = 4;//Windows ... 32(86)x
int bit64 = 8;//Windows ... 64x
Шаг 3. - Кидаем на форму кнопку (button1) , создаем действие нажатия кнопки (щелкаем по ней два раза левой кнопкой мыши). И в открывшемся окне и месте вставляем:
string NameDLL = "Ololosh.dll";//Название dll которую вносить в реестр
if (BitnostSistem == bit32)
{
//Ищем HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
RegistryKey regFirst = Registry.LocalMachine;
RegistryKey regsw = regFirst.OpenSubKey("SOFTWARE", true);
RegistryKey regmc = regsw.OpenSubKey("Microsoft", true);
RegistryKey regwin = regmc.OpenSubKey("Windows NT", true);
RegistryKey regcv = regwin.OpenSubKey("CurrentVersion", true);
RegistryKey regrun = regcv.OpenSubKey("Windows", true);
regrun.SetValue("AppInit_DLLs", NameDLL);
regrun.SetValue("LoadAppInit_DLLs", 1, RegistryValueKind.DWord);
}
if (BitnostSistem == bit64)
{
//Ищем HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ Windows NT\CurrentVersion\Windows
RegistryKey regFirst = Registry.LocalMachine;
RegistryKey regsw = regFirst.OpenSubKey("SOFTWARE", true);
RegistryKey regmc = regsw.OpenSubKey("Wow6432Node", true);
RegistryKey regwin = regmc.OpenSubKey("Microsoft", true);
RegistryKey regcv = regwin.OpenSubKey("Windows NT", true);
RegistryKey regrun = regcv.OpenSubKey("CurrentVersion", true);
RegistryKey rego = regcv.OpenSubKey("Windows", true);
rego.SetValue("AppInit_DLLs", NameDLL);
rego.SetValue("LoadAppInit_DLLs", 1, RegistryValueKind.DWord);
}
Шаг 4. - Если хотите удалить из реестра запись dll, то просто убираем название длл (оставляем пустое поле, Пример - string NameDLL = "";)
Вот в принципе и все, тестовый проект находится во вложении.
Всем удачных тестов, пробуйте, экспериментируйте.