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

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

Привилегии


Guest386x ©   (2006-01-14 20:05:00) 

Подскажите, как установить уровень привилегий SE_SHUTDOWN
(для WinXP, не хочет выключаться)


Guest386x   (2006-01-14 20:21:00) [1]

Это был глюк... ;)


Guest386x   (2006-01-14 20:20:00) [2]

В процессе выключения компа... :))


Guest386x   (2006-01-14 20:20:00) [3]

В процессе выключения компа... :))


sicilla   (2006-01-14 20:17:00) [4]

Вы это написали до того, как попробовали или после? :)))


Guest386x   (2006-01-14 20:14:00) [5]

Огромное спасибо!!


sicilla   (2006-01-14 20:11:00) [6]

function MyExitWindows(RebootParam: Longword): Boolean;
var
  TTokenHd: THandle;
  TTokenPvg: TTokenPrivileges;
  cbtpPrevious: DWORD;
  rTTokenPvg: TTokenPrivileges;
  pcbtpPreviousRequired: DWORD;
  tpResult: Boolean;
const
    SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
    if Win32Platform = VER_PLATFORM_WIN32_NT then
    begin
         tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd);
         if tpResult then
            begin
                 tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid);
                 TTokenPvg.PrivilegeCount := 1;
                 TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
                 cbtpPrevious := SizeOf(rTTokenPvg);
                 pcbtpPreviousRequired := 0;
                 if tpResult then
                    Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired);
            end;
    end;
    Result := ExitWindowsEx(RebootParam, 0);
end;

procedure TForm1.autopowerTimer(Sender: TObject);
begin
    MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;


Наверх

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