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

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

LockStation и PowerOff в NT4 [D7, NT4]


-=GaLaN=- ©   (2004-01-23 13:54:00) 

У меня два вопроса.
1) Каким образом можно сделать LockStation в NT4 программно? Вызов

ShellExecute(0, 'open', Pchar('rundll32.exe'), Pchar('USER32.DLL,LockWorkStation'), nil, SW_ShowNormal);

не помогает, ибо такая функция есть только в NT5 и выше. Но ведь сам windows может сделать LockStation! Как?
2) Перед вызовом:

ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);

как обычно получаем привелегии:

procedure GetPriv;
var
hToken: THandle;
tkp: TTokenPrivileges;
tkpo: TTokenPrivileges;
zero: DWORD;
begin
 zero:=0;
 if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
   MessageBox(0, PChar('Error'), 'OpenProcessToken() Failed', MB_OK );
   Exit;
 end;
 if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
   MessageBox(0, PChar('Error'), 'OpenProcessToken() Failed', MB_OK );
   Exit;
 end;
 if not LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then begin
   MessageBox(0, PChar('Error'), 'LookupPrivilegeValue() Failed', MB_OK );
   Exit;
 end;
 tkp.PrivilegeCount:=1;
 tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken, False, tkp, SizeOf(TTokenPrivileges), tkpo, zero);
end;

И все это прекрасно работает в том случае, если запуск идет от Администратора или пользователя с его правами. Но если прав администратора нет, завершение работы не работает, несмотря на то, что сама Windows через Turn Off Computer может компьютер выключить. Как же быть?


-=GaLaN=-   (2004-02-13 16:19:00) [1]

Мда... :(


-=GaLaN=-   (2004-02-07 15:48:00) [2]

Странно. Неужели проблемы _невозможно_ решить?


Наверх

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