Показать полную графическую версию : корневой каталог как его сменить?
Всем привет!
народ, ктонибуть знает как сменить корневой каталог при работе с рееестром,
и почему следующая строчка вызывает ошибку
rootkey:=HKEY..........
в справке по делфи сказано что параметр rootkey должен иметь целочисленное значение, но почему то во всех примерах приводится вышеперечисленная строска....?
Все rootkey в Windows.pas определены как константы
const
{ Reserved Key Handles. }
{$EXTERNALSYM HKEY_CLASSES_ROOT}
HKEY_CLASSES_ROOT = DWORD($80000000);
{$EXTERNALSYM HKEY_CURRENT_USER}
HKEY_CURRENT_USER = DWORD($80000001);
{$EXTERNALSYM HKEY_LOCAL_MACHINE}
HKEY_LOCAL_MACHINE = DWORD($80000002);
{$EXTERNALSYM HKEY_USERS}
HKEY_USERS = DWORD($80000003);
{$EXTERNALSYM HKEY_PERFORMANCE_DATA}
HKEY_PERFORMANCE_DATA = DWORD($80000004);
{$EXTERNALSYM HKEY_CURRENT_CONFIG}
HKEY_CURRENT_CONFIG = DWORD($80000005);
{$EXTERNALSYM HKEY_DYN_DATA}
HKEY_DYN_DATA = DWORD($80000006);
Соответственно для работы с реестром нужно
Uses
Windows, Registry,.....;
...
var
r: TRegistry;
begin
r := TRegistry.Create;
r.rootkey := HKEY_LOCAL_MACHINE;//или что-то другое
...
r.Free;
end;
а кто знает что нужно сделать, или какую прогу нужно запустить что бы изменения в реестре которые я сделал в сетевом доступе, вступили в силу?
simonchik
26-02-2004, 02:19
сорри за повторение, но я не понял в чем фишка....просто та же проблема, но в C++
TRegistry& regKey = *new TRegistry();
regKey.RootKey=HKEY_LOCAL_MACHINE;
bool keyGood = regKey.OpenKey("HARDWARE\DEVICEMAP\SERIALCOMM",false);
if (!keyGood) return;
.......
regKey.Free();
таким образом keyGood становиться false и вываливается
Добавлено:
хотя если
TRegistry& regKey = *new TRegistry();
regKey.RootKey=HKEY_CURRENT_CONFIG;
bool keyGood = regKey.OpenKey("Software",false);
if (!keyGood) return;
.......
regKey.Free();
keyGood становиться true, в чем разница не пойму....
vasketsov
26-02-2004, 22:55
simonchik
Используй OpenKeyReadOnly
simonchik
26-02-2004, 23:20
проблема была решена следующим образом
геморно, но работает :).....
TRegistry& regKey = *new TRegistry();
regKey.RootKey=HKEY_LOCAL_MACHINE;
bool keyGood = regKey.OpenKey("HARDWARE", false);
if (!keyGood) return;
bool keyGood2 = regKey.OpenKey("DEVICEMAP", false);
if (!keyGood2) return;
bool keyGood3 = regKey.OpenKey("SERIALCOMM", false);
if (!keyGood3) return;
regKey.Free();
shurikan
27-02-2004, 04:27
simonchik
Не забывай, что внутри Си-шной строки символ \ имеет специальное значение, так что должно быть не
bool keyGood = regKey.OpenKey("HARDWARE\DEVICEMAP\SERIALCOMM",false); ,
а
bool keyGood = regKey.OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM",false);
:)
simonchik
02-03-2004, 01:42
да, спасибо, я понял....
а по моему вопросу ни ктоне знает.....?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.