Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
1

Работа с реестром(автозагрузка)

08.05.2009, 07:47. Показов 8272. Ответов 21
Метки нет (Все метки)

Ув программисты при работе с автозагрузкой получилось ее сделать.т.е. записать строку в реестре в ключ run.программа теперь каждый раз как загружаю систему запускается.но проблема в том как удалить теперь эту строчку из ключа чтобы она не запускалась со стартом системы
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2009, 07:47
Ответы с готовыми решениями:

Работа с реестром.
:help:Пытаюсь сделать свой твик по ХРюшу,:huh:Помогите пожалуйста, ехе у меня почемуто запускаеться...

Работа с реестром.
помогите плз найти, пишет error 6 ocured: void __fastcall TForm1::btnRestoreClick(TObject...

Работа с реестром
Можете, пожалуйста, подсказать что придумать. Мне нужно в своей программе сделать разграничение...

Работа с реестром
Всем привет. Учусь работать с реестром. Накодил вот такое reg->RootKey= HKEY_CURRENT_USER;...

21
1089 / 587 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
08.05.2009, 08:12 2
покажи как записывал и я покажу как удалить
0
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
08.05.2009, 09:09  [ТС] 3
Цитата Сообщение от AntonChik Посмотреть сообщение
покажи как записывал и я покажу как удалить
C++
1
2
3
4
5
TRegistry *reg = new TRegistry();
reg->RootKey=HKEY_CURRENT_USER;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",true);
reg->WriteString(""Proj",Application->ExeName");
reg->CloseKey();
1
4949 / 2413 / 531
Регистрация: 05.06.2008
Сообщений: 7,517
Записей в блоге: 3
08.05.2009, 09:30 4
Попробуй изменить в 3 строке
C++
1
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVer sion\\Run",false);
0
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
08.05.2009, 09:32  [ТС] 5
Цитата Сообщение от Sasha Посмотреть сообщение
Попробуй изменить в 3 строке
C++
1
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVer sion\\Run",false);
идея хорошая=)Я тоже сначала так подумал.но нет.это значит что мы даем права на запись вроде=)
1
2808 / 1399 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
08.05.2009, 09:37 6
если быть точнее, то true означает, что если этой секции в реестре не существует, то мы е создаем.
0
Эксперт С++
2334 / 1707 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
08.05.2009, 09:40 7
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от KoFeMaH Посмотреть сообщение
это значит что мы даем права на запись вроде=)
Это значит, что если указанного ключ отсутствует, то он будет создан.
А удалить можно следующим образом:
C++
1
2
3
reg->RootKey = HKEY_CURRENT_USER;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
reg->DeleteValue("Proj");
3
2808 / 1399 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
08.05.2009, 09:43 8
Лучший ответ Сообщение было отмечено как решение

Решение

вот запись

C++
1
2
3
4
5
TRegistry *reg = new TRegistry();
reg->RootKey=HKEY_CURRENT_USER;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",true);
reg->WriteString("Proj",Application->ExeName);
reg->CloseKey();
удаление для этого ключа:
C++
1
2
3
4
5
TRegistry *reg = new TRegistry();
reg->RootKey=HKEY_CURRENT_USER;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",true);
reg->DeleteValue("Proj");
reg->CloseKey();
Добавлено через 31 секунду
ой... не успел...
3
Волшебник
64 / 63 / 7
Регистрация: 21.11.2009
Сообщений: 319
21.11.2009, 21:14 9
Парни! А теперь помогите еще и мне
У меня та же ситуация, добавил ключ в автозагрузку, а как программно отключить не знаю
Вот код которым я добавлял ключ в реестр:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HKEY hKey;
   char szPath[0x100];
   GetModuleFileName(NULL, szPath, sizeof(szPath));
   RegCreateKeyEx(HKEY_LOCAL_MACHINE,
                    "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
                    NULL,
                    "",
                    REG_OPTION_NON_VOLATILE,
                    KEY_SET_VALUE,
                    NULL,
                    &hKey,
                    NULL);
 
   if (hKey)
   {
       RegSetValueEx(hKey, "Имя ключа", NULL, REG_SZ, (LPBYTE)szPath, strlen(szPath));
       RegCloseKey(hKey);
   }
Заранее Спасибо!
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
22.11.2009, 00:16 10
Rapsod, А его надо просто удалить
C
1
2
3
4
5
6
7
8
9
10
11
   HKEY hKey;
   RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                    "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
                    0,
                    KEY_EXECUTE,
                    &hKey);
 
   if (hKey) {
       RegDeleteKey(hKey, "Имя ключа");
       RegCloseKey(hKey);
   }
Добавлено через 16 минут
Скорее всего в 5-й строке надо поставить KEY_WRITE, так как KEY_EXECUTE прав на удвление может не дать.
0
Волшебник
64 / 63 / 7
Регистрация: 21.11.2009
Сообщений: 319
22.11.2009, 14:10 11
Цитата Сообщение от АНК Посмотреть сообщение
Rapsod, А его надо просто удалить
C
1
2
3
4
5
6
7
8
9
10
11
   HKEY hKey;
   RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                    "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
                    0,
                    KEY_EXECUTE,
                    &hKey);
 
   if (hKey) {
       RegDeleteKey(hKey, "Имя ключа");
       RegCloseKey(hKey);
   }
Добавлено через 16 минут
Скорее всего в 5-й строке надо поставить KEY_WRITE, так как KEY_EXECUTE прав на удаление может не дать.
К сожалению ключ не удаляется, а ни с KEY_WRITE, а ни с KEY_EXECUTE...
Есть еще варианты? а то я с этим ключом уже неделю голову ламаю
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
22.11.2009, 14:58 12
Цитата Сообщение от Rapsod Посмотреть сообщение
К сожалению ключ не удаляется, а ни с KEY_WRITE, а ни с KEY_EXECUTE..
Ну хорошо, по какой причине не удаляется?
Ключ не окрывается?
Что возвращает RegOpenKeyEx? Попробуй RegOpenKey...
Что возвращает RegDeleteKey?

Почитать о функциях доступа к реестру можно здесь
http://w32api.narod.ru/
0
4949 / 2413 / 531
Регистрация: 05.06.2008
Сообщений: 7,517
Записей в блоге: 3
22.11.2009, 23:30 13
KoFeMaH, ты же уже задавал этот вопрос мы его решили сделать так
Вот решение твоей проблемы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TOptionsForm::Run_for_WindowsClick(TObject *Sender)
{
 if (Run_for_Windows->Checked)
 {
  reg->RootKey=HKEY_LOCAL_MACHINE;
  reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false);
  reg->WriteString(ExtractFileName(ChangeFileExt(Application->ExeName,"" )),Application->ExeName);
  reg->CloseKey();
 }
 
 else
 {
  reg->RootKey=HKEY_LOCAL_MACHINE;
  reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false);
  reg->DeleteValue(ExtractFileName(ChangeFileExt(Application->ExeName,"" )));
 }
Добавлено через 1 час 15 минут
Прошу прощение это сообщение адресовано Rapsod.
0
Волшебник
64 / 63 / 7
Регистрация: 21.11.2009
Сообщений: 319
23.11.2009, 17:47 14
Цитата Сообщение от Sasha Посмотреть сообщение
KoFeMaH, ты же уже задавал этот вопрос мы его решили сделать так
Вот решение твоей проблемы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TOptionsForm::Run_for_WindowsClick(TObject *Sender)
{
 if (Run_for_Windows->Checked)
 {
  reg->RootKey=HKEY_LOCAL_MACHINE;
  reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false);
  reg->WriteString(ExtractFileName(ChangeFileExt(Application->ExeName,"" )),Application->ExeName);
  reg->CloseKey();
 }
 
 else
 {
  reg->RootKey=HKEY_LOCAL_MACHINE;
  reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false);
  reg->DeleteValue(ExtractFileName(ChangeFileExt(Application->ExeName,"" )));
 }
Добавлено через 1 час 15 минут
Прошу прощение это сообщение адресовано Rapsod.
Спасибо за помощь! Но у меня ошибку выбрасывает: [BCC32 Error] Unit1.cpp(535): E2451 Undefined symbol 'reg'
0
4949 / 2413 / 531
Регистрация: 05.06.2008
Сообщений: 7,517
Записей в блоге: 3
23.11.2009, 17:53 15
Так правильно и выбрасывает вверху пропиши


C++
1
#include "registry.hpp"
а потом глобально вот эту строку перед конструктором и всё будет норм

C++
1
2
3
4
5
6
TRegistry *reg = new TRegistry();
//---------------------------------------------------------------------------
__fastcall TOptionsForm::TOptionsForm(TComponent* Owner)
        : TForm(Owner)
{
}
0
Волшебник
64 / 63 / 7
Регистрация: 21.11.2009
Сообщений: 319
29.11.2009, 13:05 16
Цитата Сообщение от Sasha Посмотреть сообщение
Так правильно и выбрасывает вверху пропиши


C++
1
#include "registry.hpp"
а потом глобально вот эту строку перед конструктором и всё будет норм

C++
1
2
3
4
5
6
TRegistry *reg = new TRegistry();
//---------------------------------------------------------------------------
__fastcall TOptionsForm::TOptionsForm(TComponent* Owner)
        : TForm(Owner)
{
}
ОГРОМНОЕ-ОГРОМНОЕ СПАСИБО!!!!!!!!!
ВСЕ ЗАРАБОТАЛО!!!!!!!!
0
OLEG291991
06.12.2009, 15:45 17
А как сделать так, чтобы в автозагрузку добавлялся файл из заданной папки?
1850 / 707 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
06.12.2009, 16:16 18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Dialog->Execute())
        {
        TRegistry*reg=new TRegistry();
        reg->RootKey=HKEY_LOCAL_MACHINE;
        if(!reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false))
                {
                ShowMessage("Не могу окрыть ветку Run");
                }
        reg->WriteString("Sender",Dialog->FileName);
        reg->CloseKey();
        delete reg;
 
        }
}
0
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
10.12.2009, 18:59 19
А как записать в реестр путь к файлу? Например C:\ProgramFiles\.....
0
4949 / 2413 / 531
Регистрация: 05.06.2008
Сообщений: 7,517
Записей в блоге: 3
10.12.2009, 19:37 20
Ну насколько я помню есть функция ExtractFilePath(), именно она считывает путь к файлу а запихнуть в реестр можно при помощи WriteString
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2009, 19:37

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Работа с реестром
пробую сделать такую штуку: regm->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows...

Работа с реестром в C++ Builder
Вступление: Данный FAQ тестировался и писался на системе Windows XP SP2. Используемый...

Работа с реестром Виндовс. TRegistry
Мне необходимо реализовать простую программку для работы с реестром Виндовс, а точнее для работы с...

Работа с реестром и перемещение файла.
1) Не могу создать универсальный исполняемый файл exe, который можно было бы запускать на любом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.