Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Может так

Код: Выделить весь код
1. TForm1.FormCreate(....);
...
RegSetWOW64AccessMode(raNative);

и запросить привилегии, если программа исполняется в Виста и выше

if (CheckWin32Version(6, 0)) then
begin
   if not IsPrivilegeEnabled('SeBackupPrivilege') then
      EnableProcessPrivilege(True, 'SeBackupPrivilege');
   if not IsPrivilegeEnabled('SeRestorePrivilege') then
      EnableProcessPrivilege(True, 'SeRestorePrivilege');
end;
....

а по завершению программы, восстановить привилегии 

if (CheckWin32Version(6, 0)) then
begin
   if IsPrivilegeEnabled('SeBackupPrivilege') then
      EnableProcessPrivilege(False, 'SeBackupPrivilege');
   if IsPrivilegeEnabled('SeRestorePrivilege') then
      EnableProcessPrivilege(False, 'SeRestorePrivilege');
end;

2. Нужно ли выводить все операциям с ключами в Memo, может просто поднимать исключение?

if (RegKeyExists(RootKey, PathKEY)) then
begin
   if not(RegDeleteKeyTree(RootKey, PathKEY)) then
   begin
      RaiseLastOSError;
      exit;
   end
end;

а если Memo служит для последующего сохранения log-файла, то тогда можно добавить код ошибки (дата, время и т.д.)
... Lines.Add('Сообщение.... '+ SysErrorMessage ( GetLastError )));

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:53, 26-02-2016 | #2