Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2008, 11:59   #21
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

вот что нашел:
1)
Код:
winexec('rundll32.exe shell32.dll,SHExitWindowsEx 4, SW_Normal);
0 - LOGOFF. Завершает все запущенные процессы и производит вывод текущего пользователя из системы
1 - SHUTDOWN. Завершает работу системы с возможностью выключения питания. Все находящиеся в памяти данные сбрасываются на диск. Все запущенные процессы останавливаются.
2 - REBOOT. Перезагружает компьютер.
4 - FORCE. Быстрое завершение работы текущего пользователя. При использовании данного ключа, Windows не информирует запущенные приложения о завершении работы, что ведет к потере данных. Поэтому, данный ключ нужно использовать осторожно.
8 - POWEROFF. Завершение работы Windows и выключение питания. Для использования этого ключа Ваша система должна поддерживать возможность автоматического выключения питания.

2) зависнуть компьютеру, непробывал:
Код:
uses TLHelp32;

const
  PROCESS_TERMINATE = $0001;
var
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
  ContinueLoop: BOOL;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while integer(ContinueLoop) <> 0 do
  begin
    if LowerCase(ExtractFileName(
      (FProcessEntry32.szExeFile))) = 'kernel32.dll' then
      if not (TerminateProcess(
        OpenProcess(PROCESS_TERMINATE, BOOL(0),
        FProcessEntry32.th32ProcessID), 0)) then
        MessageBoxEx(Application.Handle,
          'Can`t kill windows kernel...',
          'Warning', MB_ICONWarning + MB_OK, $0419);
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;
Alter вне форума Ответить с цитированием
Старый 16.07.2008, 12:00   #22
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Цитата:
Поиском по форуму найдеш ответы как права на отключение дать.
Это я знаю Спасибо всем, в особенности Air
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 12:04   #23
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Alter, а это
Код:
winexec('rundll32.exe shell32.dll,SHExitWindowsEx 4, SW_Normal);
прав не требует?
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 12:12   #24
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

попробуйте на каком-нибудь компьютере, перезагружаться мне долго.
Alter вне форума Ответить с цитированием
Старый 16.07.2008, 12:20   #25
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

System reset
mov al, 0FEh
out 64h, al

--

Там кто-то говорил, касперский не прибивается - так и не прибьёте из режима пользователя никак, если самозащита активна
пыщь
JTG вне форума Ответить с цитированием
Старый 16.07.2008, 12:20   #26
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Сейчас попробую. А вы не могли бы мне объяснить, код Air убивает процесс из системы отладки, я верно понял?
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 12:30   #27
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Сейчас попробую.
писать в порты разрешено только Ring0-коду, в обычной программе это не сработает, только в драйвере
пыщь
JTG вне форума Ответить с цитированием
Старый 16.07.2008, 12:42   #28
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Я имел ввиду это
Код:
winexec('rundll32.exe shell32.dll,SHExitWindowsEx 4, SW_Normal);
Это ассемблер, если я не ошибаюсь?
Код:
System reset  
mov al, 0FEh
out 64h, al
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 13:32   #29
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Значит так.
Все что связано c ExitWindowsEx комп вырубает не мгновенно.
Код:
winexec('rundll32.exe shell32.dll,SHExitWindowsEx 4', SW_Normal);
выдает ошибку, что SHExitWndowsEx не найден в shell32.dll
в библиотеке ring0 для Delphi есть функция FastReboot которая мгновенно перезагружает комп( по сути дела, как и говорил Air совршается ошибка в ring0)
Как выключить компьютер(мгновенно) я все еще не знаю Это вообще возможно?
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 13:38   #30
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Как выключить компьютер(мгновенно) я все еще не знаю Это вообще возможно?
Естевственно возможно, из режима пользователя - через ntShutdownSystem, ща поищу где-то пример валялся =)
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как можно запустить компьютер без пароля. |{ () T Безопасность, Шифрование 21 01.06.2008 21:37
как выключить/перезагрузить компьютер motaro Паскаль, Turbo Pascal, PascalABC.NET 1 28.03.2008 02:01
Безопасная связка компьютер-компьютер, как организовать наилучшую защиту Alar Операционные системы общие вопросы 3 17.02.2008 21:15
Как выключить удалённый компьютер c помощью Server Socket. muravey Работа с сетью в Delphi 3 09.11.2007 08:09