Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Реестр [D6, WinXP]


illy ©   (2005-10-13 22:44:00) 

Приветствую!
Помогите разобраться.
Имеется процедура в которую передаются два параметра, HKEY_LOCAL_MACHINE и 'Softvare'.

procedure TForm1.ToFile(Hkey_: HKEY; KeyStr_: string);
var
 Key: HKEY;
 ErrorCode: integer;
 ver: TOSVERSIONINFO;
 TokenHandle: THandle;
 tp, prevst: TTokenPrivileges;
 rl:DWORD;
 lpMsgBuf: PChar;
begin
 ErrorCode:=RegOpenKeyEx(Hkey_, PChar(KeyStr_), 0, KEY_READ, Key);
 if ErrorCode=ERROR_SUCCESS then
 try
   ver.dwOSVersionInfoSize := Sizeof(ver);
   GetVersionEx(ver);
   if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
     OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,TokenHandle);
     LookupPrivilegeValue(Nil,'SeBackupPrivilege',tp.Privileges[0].Luid);
     tp.PrivilegeCount:=1;
     tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
     AdjustTokenPrivileges(TokenHandle, false, tp, SizeOf(prevst), prevst, rl);
   end;

   ErrorCode:=RegSaveKey(Key, 'tempreg.tmp', nil);
 finally
   RegCloseKey(Key);
 end;

 if ErrorCode<>ERROR_SUCCESS then  MessageBox(0, 'Ошибка', '', MB_ICONERROR);
end;

RegSaveKey возвращает ошибку, если не ошибаюсь код 2(файл не найден), и создает файл нулевой длинны.
Подскажите в чем проблема?


illy   (2005-10-21 02:43:00) [1]


> Код в [0] рабочий. Вызывайте правильно ;) Например :
> ToFile(HKEY_LOCAL_MACHINE,'Software\Borland');

Вызов идет уменя так:
procedure TForm1.Button2Click(Sender: TObject);
begin
ToFile(HKEY_LOCAL_MACHINE,'Software');
end;


illy   (2005-10-21 02:23:00) [2]


> Код в [0] рабочий. Вызывайте правильно ;) Например :
> ToFile(HKEY_LOCAL_MACHINE,'Software\Borland');

Если можно, подробней пожалуйста, не разберусь никак.


evvcom   (2005-10-14 14:02:00) [3]

Инструмент такой есть, regedit.exe называется. Иногда позволяет прояснить картину, ну хотя бы по поводу правильности написания имен.


GanibalLector   (2005-10-14 01:52:00) [4]

>Softvare
Нет такого. Есть SoftWare

Код в [0] рабочий. Вызывайте правильно ;) Например :
ToFile(HKEY_LOCAL_MACHINE,'Software\Borland');


Наверх

Титульная страница Поиск, карта сайта Написать письмо