Sleep
Зарегистрирован: 06.09.2004 Сообщения: 1
|
Добавлено: Пн Сен 06 2004 08:49 Заголовок сообщения: TRegistry в С++Builder |
|
|
Подскажите, как сохранить ключ с помощью SaveKey
если сделать вот так:
TRegistry ® = *new TRegistry();
reg.RootKey = HKEY_LOCAL_MACHINE;
reg.SaveKey("SOFTWARE\\Adobe", "C:\\new.reg");
delete ®
То файл создается но пустой.
Я посмотрел API RegSaveKey, нужно установить SE_BACKUP_NAME... видимо тоже самое и для TRegistry
Добавил:
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
LUID luid;
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
ShowMessage("OpenProcessToken");
LookupPrivilegeValue(NULL, SE_BACKUP_NAME,
&luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = luid;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp,
sizeof(TOKEN_PRIVILEGES),NULL, NULL );
if (GetLastError() != ERROR_SUCCESS)
ShowMessage("AdjustTokenPrivileges");
Ключ сохранился, но в совершенно дикой кодировке |
|
AlexDark Гость
|
Добавлено: Пн Сен 06 2004 21:25 Заголовок сообщения: |
|
|
Все гораздо проще: (пример)
Открываем на чтение ключ реестра
const char *RegKey="Software\\Relata\\Flur";
TRegistry *reg=new TRegistry;
if(!reg->OpenKey(RegKey,false))
{
ipadres="";
FWhorun->ShowModal(); // если неудалось открыть, открываем
// окно сохранения ключа.
}
else {
ipadres=reg->ReadString("ipadres"); // если удало считать, то читаем
}
delete reg;
Сохранение ключа в реестр:
const char *RegKey1="Software\\Relata\\Flur";
TRegistry *reg1=new TRegistry;
reg1->OpenKey(RegKey1,true);
reg1->WriteString("ipadres",Edit1->Text);
delete reg1;
Вот и все. |
|