Ветеран
![Contributor](http://forum.oszone.net/images/groups/contributor.gif)
Сообщения: 1803
Благодарности: 714
|
Профиль
|
Отправить PM
| Цитировать
Может так
Код: ![Выделить весь код](images/misc/selectcode.png)
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
|