В данной статье пойдет речь о том, как можно работать с реестром.
Как сделать Автозапуск программы; Как сделать Сохранение параметров программы; Как делать Добавлять и удалять dll’ки из реестра – с#.
[*]Что нам потребуется:
- Microsoft Visual Studio 2010
- Начальные знания c#
- Желание
[*]Как сделать Автозапуск программы (по включению Компьютера):
Шаг 1. Добавляем ссылку на библиотеку (в шапке главного файла формы):
Код:
using Microsoft.Win32;
Шаг 2. Теперь создаем 2 действия (Открытие формы и Закрытие)
- Открытие формы:
Двойным щелчком левой кнопки мыши нажимаем на свободное формы.
- Закрытие формы:
После того, как сделали "Открытие формы" ниже вставляем:
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_Closing);
Это мы создали действие при закрытии формы.
Шаг 3. - Теперь возвращаемся в главный файл Формы 1, (Form1.cs), где мы вставляли пред код.
После этого кода, вставляем вот этот:
Код:
void AutoRunForm(bool Run)
{
/* Нам нужно Создать запись в:
* HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\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" вот это:
[*]Теперь расскажу как можно записывать настройки в реестр:
Шаг 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();
Шаг 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. - Обновляем интерфейс.
В главный файл кидаем вот это:
Шаг 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) , создаем действие нажатия кнопки (щелкаем по ней два раза левой кнопкой мыши). И в открывшемся окне и месте вставляем:
Это немного некорректный вопрос в данной теме.
С помощью реестра не выгрузить dll'ку. Можно только удалить следы из реестра Какой то дллки.
А это можно легко сделать
Цитата:
Сообщение от warl0ck
если ты имеешь ввиду просто убрать название дллки то:
Код:
reg.SetValue("AppInit_DLLs", string.Empty);
зы. Варлок если пожелает, может рассказать (у него в его инжекторе есть данная функция)
Нуу.. Спроси у варлока пож))) я типо хочу выгрузить файлы фроста
И так, во вложении находится архив с файлом.Добавь его в проект.
Там нужно будет изменять имя структуры. (я указал где)
теперь кидаешь на форму кнопку, а в открывшемся окошке вставляешь:MessageBox.Show("");
Вопрос: А WinApis.cs это в проекте как по другому называется А то не где нету)))
Добавлено через 2 минуты
Или просто засунуть в проект? Я так сделал))
Добавлено через 1 час 50 минут
Короче!! Я создал новый класс все добавил переименовал и код всунул но когда вкл игру нажимаю выгрузить такую то ДЛЛ то пишет что её не нашёл.... хотя в фросте она есть Добавиь в скайп: Artemuidak С пометкой : С жука
Последний раз редактировалось artemuidak99; 14.04.2012 в 07:45.
Причина: Добавлено сообщение
Вопрос: А WinApis.cs это в проекте как по другому называется А то не где нету)))
Добавлено через 2 минуты
Или просто засунуть в проект? Я так сделал))
Добавлено через 1 час 50 минут
Короче!! Я создал новый класс все добавил переименовал и код всунул но когда вкл игру нажимаю выгрузить такую то ДЛЛ то пишет что её не нашёл.... хотя в фросте она есть Добавиь в скайп: Artemuidak С пометкой : С жука
Зачем оно вам нужно? Есть отдельные программы, которые выгружают длл из игры.
Поучите немножно простейшее (там, для чего нужны библиотеки, названия, работа с формами и т.д), после этого вы спокойно сможете сделать, то что я написал.
Там ничего сложного нету, главное не накосячить. А объяснить очень трудно..
Но я попытаюсь.. И так, ищешь в гугле "как добавить в проект файлы. Microsoft Visual Studio 2010", после добавляешь файл "WinApis.cs".
Затем открываешь его и изменяешь в самом начале "имявашей" на название проекта.
И запомни, главное не накосячить и все будет ок.
Зы, в скайп никогда не добавляюсь, к тебе тем более.
Зачем оно вам нужно? Есть отдельные программы, которые выгружают длл из игры.
Поучите немножно простейшее (там, для чего нужны библиотеки, названия, работа с формами и т.д), после этого вы спокойно сможете сделать, то что я написал.
Там ничего сложного нету, главное не накосячить. А объяснить очень трудно..
Но я попытаюсь.. И так, ищешь в гугле "как добавить в проект файлы. Microsoft Visual Studio 2010", после добавляешь файл "WinApis.cs".
Затем открываешь его и изменяешь в самом начале "имявашей" на название проекта.
И запомни, главное не накосячить и все будет ок.
Зы, в скайп никогда не добавляюсь, к тебе тем более.
Невозможно без подключению к процессу выгрузить .dll на C#.
Так как .dll (Он же подключенный модуль) должна где либо хранится, чтобы выгрузить её ты должен "зайти" в это "хранилище " и от туда её выгрузить. А с пустого места выгрузить .dll, тем более на C# - не реально.