ShadowMas
01-10-2009, 20:29
Привет всем!
Тут начал разбираться с C++ и столкнулся с такой проблемкой, не как не определюсь с порядком построения команд в "Borland C++ v.5.02".
До этого в основном работал с скриптовыми языками там всё гораздо понятнее :)
Подскажите как будет выглядеть такая запись:
Добавить параметр типа DWORD
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableTaskMgr"=dword:00000001
Удалить
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableTaskMgr"=dword:00000001
На скриптовом языке "AutoIt" это будет выглядеть примерно так
Добавить параметр типа DWORD
RegWrite('HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableTaskM gr','REG_DWORD','1')
Удалить
RegDelete('HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableTask Mgr')
ShadowMas, примерно так.
#include <registry.hpp>
...
TRegistry* reg1 = new TRegistry;
reg1->RootKey = HKEY_CURRENT_USER; //присваивание объекту 'reg' пути HKLM
reg1->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
reg1->WriteInteger("Имя_Параметра", значение);
...
reg1->DeleteValue(); // Удаляет параметр
reg1->DeleteKey(); // Удаляет ключ
Шаг 13 - TRegistry. (http://www.firststeps.ru/cbuilder/r.php?13)
Шаг 14 - Извлечение иконки по расширению файла и ее загрузка из DLL или EXE. (http://www.firststeps.ru/cbuilder/r.php?14)
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableTaskMgr"=dword:00000001Достаточно просто
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
Borland C++ v.5.02 »
в нём фокус, предложенный Drongo не прокатит. Надо или из библиотеки OWL класс искать, или Win32 API.
Win32 API:
// 1. получить мнимый указатель на ветку реестра HKEY функцией RegOpenKey
// 2. получить значение функцией RegQueryValue
// 3. освободить указатель RegCloseKey
unsigned char binary_data_buffer[100];
long binary_data_buffer_size;
HKEY hkey; // RegOpenKey инициализирует нулём, если не получится
if (0==RegOpenKey(HKEY_CURRENT_USER, "Software\\Path", &hkey) &&
0==RegQueryValue(hkey, "var_name", binary_data_buffer, &binary_data_buffer_size))
{
clog << hex << setfill('0');
for(unsigned b=0; n<binary_data_buffer_size; ++n)
{
clog << hex << setw(2) << unsigned(binary_data_buffer[n]) << " ";
}
}
if (hkey) RegCloseKey(hkey);
ShadowMas
02-10-2009, 20:43
Да я смотрю С++ не сильно дружит с реестром Windows ) А 1 пример я так понимаю к Borland C++ Builder 6.0 да?!
А 1 пример я так понимаю к Borland C++ Builder 6.0 да?! »Да. Я в своей конфигурации компьютера в раздел Прочее, написал свою среду разработки, чтобы знали. :)
Borland C++ Builder 6.0 Enterprise Suite
ShadowMas, С++ и реестр windows - это язык программирования и программный объект.
Да я смотрю С++ не сильно дружит с реестром Windows »
Всё равно что сказать, что русский язык со стихами не дружит.
Пример Drongo подходит к любому компилятору C/C++, который сможет использовать библиотеку VCL.
А с чем связано использование такого устаревшего компилятора как BC++ 5.0.2? Он ведь даже со стандартную библиотеку С++ неуверенно собирает...
ShadowMas
04-10-2009, 01:35
А с чем связано использование такого устаревшего компилятора как BC++ 5.0.2? Он ведь даже со стандартную библиотеку С++ неуверенно собирает... »
Просто оказался под рукой, и быстро устанавливается, а вообще я с "Borland C++ Builder 6.0" буду работать к нему я так понял этот пример приминим!
CyberStyLe
30-03-2010, 16:28
Необходимо написать программку твикер. В дальнейшем планируется сделать GUI.
Все что она будет делать, - это запускаться и добавлять/изменять/удалять в реестр некоторые ключи и параметры, после этого завершать свою работу.
Имеется опыт в написании подобных программок на AutoIt.
Пишу(пытаюсь писать) в C++ Builder 2009.
Кто подкинет хотя бы небольшой примерчик кода, чтобы было отчего отталкиваться. Ну или ссылку по моей теме.
CyberStyLe
Вам нужно использовать класс TRegistry
в справке подробно описано +
ссылок в инете море...
http://sources.ru/builder/faq/index.html
CyberStyLe, Темы объединю, почитайте с самого начала.
CyberStyLe
30-03-2010, 18:31
CyberStyLe, Темы объединю, почитайте с самого начала
Я не понял, приведите кто-нибудь пожалуйста часть кода с самого начала начиная с директив для CodeGear™ C++Builder® 2009 Version 12.0.3420.21218
CyberStyLe, Вот упрощённый пример. Хотя по этой ссылке Шаг 13 - TRegistry. (http://www.firststeps.ru/cbuilder/r.php?13) и Шаг 14 - Извлечение иконки по расширению файла и ее загрузка из DLL или EXE. (http://www.firststeps.ru/cbuilder/r.php?14). Очень понятно написано. Я не по верю, что вы бы не поняли, если бы прочли. Написано более чем доходчиво.
// Работа с реестром C++ Builder 2009-----------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <registry.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
// Записать в реестр---------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRegistry* reg = new TRegistry;
reg->RootKey = HKEY_CURRENT_USER; //присваивание объекту 'reg' пути HKCU
reg->OpenKey("Software\\Test", true);
reg->WriteString("TestKey", "TestValue");
}
// Удалить из реетра---------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TRegistry* reg = new TRegistry;
reg->RootKey = HKEY_CURRENT_USER;
reg->OpenKey("Software\\Test", true);
reg->DeleteValue("TestKey");
}
//---------------------------------------------------------------------------
-Marshall-
09-04-2010, 20:16
Пишу твикер и столкнулся с таким твиком, чтоб не проверять диски при загрузке системы. Так там идёт в hex формате... Раньше такого не знал, но тут столкнулся и не пойму как это реализовать на своём C++ Builder'e..
Помогите пожалуйста.
Вот сам твик (1 и 3 я реализовал, а 2 и 4 не понимаю...):
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
"AutoChkTimeOut"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
"BootExecute"=hex(7):61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00,20,\
00,61,00,75,00,74,00,6f,00,63,00,68,00,6b,00,20,00,2a,00,00,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"SFCScan"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\cleanuppath]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6c,00,\
65,00,61,00,6e,00,6d,00,67,00,72,00,2e,00,65,00,78,00,65,00,20,00,2f,00,44,\
00,20,00,25,00,63,00,00,00
-Marshall-
20-04-2010, 08:36
Ну что, никто не знает? :(
-Marshall- если не смущает что без использования встроенных возможностей Билдера то, то по второму есть пример
Для того чтобы native-приложение запускалось до загрузки винды (собственно, никак иначе его и не запустить… стандартными средствами) нужно залезть в реестр, в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager, открыть там ключ BootExecute
...
Другой вариант – это написать небольшой код специально для регистрации нашего приложения.
BOOL RegistryAdd(PSTR szAppName)
{
... >> (http://www.xakep.ru/magazine/xa/082/114/5.asp)
Для четвёртого привожу пример чтения значения по умолчанию для ветки реестра
#include <windows.h>
int wmain(int argc, wchar_t *argv[])
{
HKEY hKey;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\cleanuppath",
NULL, KEY_QUERY_VALUE, &hKey))
return -1;
wchar_t sValue[MAX_PATH];
DWORD dwDummy = MAX_PATH;
RegQueryValueEx(hKey, NULL, NULL, NULL, (LPBYTE)sValue, &dwDummy);
RegCloseKey(hKey);
return 0;
}
В переменную (sValue)попадёт именно в строковом виде, в отличии от того что обнаружит блокнот после экспорта из реестра.
http://s48.radikal.ru/i121/1004/94/a636fb2f8e93x.jpg (http://s48.radikal.ru/i121/1004/94/a636fb2f8e93.png)
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.