Компьютерный шаман
Сообщения: 2910
Благодарности: 956
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Цитата gabasov:
Все таки проще через API: »
|
Только не забываем еще привелегии получить на работу с реестром.
читать дальше »
Код: ![Выделить весь код](images/misc/selectcode.png)
const
SE_BACKUP_NAME = 'SeBackupPrivilege';
SE_RESTORE_NAME = 'SeRestorePrivilege';
function AdjustRestorePrivileges: boolean;
var
handle, ph: THandle;
pid, n: DWORD;
luid: TLargeInteger;
priv: TTokenPrivileges;
dummy: PTokenPrivileges;
Err: DWORD;
begin
if IsNtOs then
begin
Result := False;
pid := GetCurrentProcessId;
ph := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
if not OpenProcessToken(ph, TOKEN_ADJUST_PRIVILEGES, handle) then
exit;
if not LookupPrivilegeValue(nil, SE_RESTORE_NAME , luid) then
exit;
priv.PrivilegeCount := 1;
priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
priv.Privileges[0].Luid := luid;
dummy := nil;
AdjustTokenPrivileges(handle, False, priv, 0, dummy^, n);
Err := GetLastError;
if Err <> ERROR_SUCCESS then
exit;
end;
Result := True;
end;
|
-------
Человеческая лень - главная движущая сила технического прогресса.
Отправлено: 12:14, 14-12-2008
| #855
|