Новичок
Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.4.2013
Репутация: нет Всего: нет
|
Здравствуйте, помогите пожалуйста написать с помощью апи функций программу которая будет делать изменения в реестре одного ключа, или хотя бы самые функции... Нужно скрыть меню Завершение сеанса в меню Пуск. HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Policies\ Explorer создайте парметр NoLogOff = 1 - включено, 0 - выключено есть пример похожей программы Создать команду, применяемую к незарегистрированным типам файлов. Например: вы частенько сталкивались с файлами типа readme.!!!. Согласитесь довольно нудно открывать их с помощью диалога "Открыть с помощью…" HKEY_CLASSES_ROOT\ *\ Shell\ Open\ Command = "Notepad "%1"" Код | //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; AnsiString type=""; //строковая переменная LPCTSTR data=""; AnsiString path=""; //для записи имени DWORD dwCreate=REG_CREATED_NEW_KEY; //флаг создания ключа
//--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender) { Edit1->Text=""; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) {
HKEY h; //объявили дескриптор ключа AnsiString programme="C:\\Windows\\notepad.exe,-470"; AnsiString prog="C:\\Windows\\notepad.exe"; type="."+Edit1->Text+"\\OpenWithProgids"; //путь if(RegCreateKeyEx(HKEY_CLASSES_ROOT, type.c_str(), 0, NULL, NULL, //пытаемся создать подключ KEY_WRITE, NULL, &h, &dwCreate)!=ERROR_SUCCESS) { ShowMessage("error");
} RegCloseKey(h); //закрытие подключа path="MyProg."+Edit1->Text; RegOpenKeyEx(HKEY_CLASSES_ROOT, type.c_str(), 0, KEY_ALL_ACCESS , &h); //открываем подключ RegSetValueEx (h, path.c_str(), 0, REG_SZ, (LPBYTE)data, strlen(data)+1);//записываем значение RegCloseKey(h); //закрываем подключ type="MyProg."+Edit1->Text+"\\DefaultIcon";//меняем путь
if(RegCreateKeyEx(HKEY_CLASSES_ROOT, type.c_str(), 0, NULL, NULL, KEY_WRITE, NULL, &h, &dwCreate)!=ERROR_SUCCESS) //создаем еще подключ { ShowMessage("error");
} RegSetValueEx (h, (LPCTSTR)"", 0, REG_SZ, (LPBYTE)programme.c_str(), strlen(programme.c_str())+1); //записываем в него строку RegCloseKey(h);//закрываем type="MyProg."+Edit1->Text+"\\Shell\\Open\\command"; //для нового подключа if(RegCreateKeyEx(HKEY_CLASSES_ROOT, type.c_str(), 0, NULL, NULL, KEY_WRITE, NULL, &h, &dwCreate)!=ERROR_SUCCESS) //создаем подключ { ShowMessage("Error");
} prog+=" %1"; //дописываем к нашему пути RegSetValueEx (h, (LPCTSTR)"", 0, REG_SZ, (LPBYTE)prog.c_str(), strlen(prog.c_str())+1); //пишем в данный подключ RegCloseKey(h); //закрываем ключ
} //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //тут меняем путь и имя, вызываем функцию. type="."+Edit2->Text; //путь if(!del_keys(type,"OpenWithProgids")) ShowMessage("Ошибка"); type="."+Edit2->Text; //путь if(!del_keys("",type.c_str())) ShowMessage("Ошибка"); type="MyProg."+Edit2->Text;//меняем путь if(!del_keys(type,"DefaultIcon")) ShowMessage("Ошибка"); type="MyProg."+Edit2->Text+"\\Shell\\Open";//меняем путь if(!del_keys(type,"command")) ShowMessage("Ошибка"); type="MyProg."+Edit2->Text+"\\Shell";//меняем путь if(!del_keys(type,"Open")) ShowMessage("Ошибка"); type="MyProg."+Edit2->Text;//меняем путь if(!del_keys(type,"Shell")) ShowMessage("Ошибка"); type="MyProg."+Edit2->Text; if(!del_keys("",type.c_str())) ShowMessage("Ошибка");
} //--------------------------------------------------------------------------- void __fastcall TForm1::Edit2Click(TObject *Sender) { Edit2->Text=""; //очистка при клике } //--------------------------------------------------------------------------- //у функцию передаем путь к ключу и имя подключа который удалит, так как нельзя удалить ключ с подключами внутри bool TForm1::del_keys(AnsiString way,AnsiString keyName) { HKEY h; //объявили дескриптор ключа
if(RegOpenKeyEx(HKEY_CLASSES_ROOT, way.c_str(), 0, KEY_ALL_ACCESS , &h)!=ERROR_SUCCESS) { ShowMessage("Error");
} //удаляем папку расширения if(RegDeleteKey(h,keyName.c_str())==ERROR_SUCCESS) { RegCloseKey(h); //закрытие подключа return true; } return false; }
|
|