Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Power off (Убивает процессы)

Delphi , ОС и Железо , Компьютер



Автор: DeMoN-777
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Зависимости: Windows
Автор:       DeMoN-777, DeMoN-777@yandex.ru, Санкт-Петербург
Copyright:   @
Дата:        21 июня 2002 г.
***************************************************** }

procedure Shutdown2;
var
  hToken: THandle;
  tkp: _TOKEN_PRIVILEGES;
  DUMMY: PTokenPrivileges;
  DummyRL: Cardinal;
begin
  DUMMY := nil;
  if not OpenProcessToken(
    GetCurrentProcess(),
    TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
    hToken
    ) then
    raise TShutdownEx.Create('OpenProcessToken failed');

  if (not LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
    tkp.Privileges[0].Luid)) then
    raise TShutdownEx.Create('LookupPrivilegeValue failed');

  tkp.PrivilegeCount := 1;
  tkp.Privileges[0].Attributes := $0002; //SE_PRIVILEGE_ENABLED = $00002

  AdjustTokenPrivileges(hToken, FALSE, tkp, 0, Dummy, DummyRL);

  if (GetLastError() <> ERROR_SUCCESS) then
    raise TShutdownEx.Create('AdjustTokenPrivileges failed');

  if (not ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0)) then
    raise TShutdownEx.Create('ExitWindowsEx failed');
end;

Это фрагмент кода на языке Delphi, который обеспечивает функцию отключения питания (shutdown) для систем Windows. Код был написан DeMoN-777 и впервые опубликован в июне 2002 года.

Вот разбивка кода:

Процедура Shutdown2

Процедура Shutdown2 выполняет следующие задачи:

  1. OpenProcessToken: Открывает токен процесса с необходимыми привилегиями для изменения и запроса привилегий.
  2. LookupPrivilegeValue: Ищет значение привилегии 'SeShutdownPrivilege', которая требуется для отключения системы.
  3. AdjustTokenPrivileges: Изменяет привилегии токена процесса, чтобы включить привилегию 'SeShutdownPrivilege'.
  4. ExitWindowsEx: Вызывает функцию ExitWindowsEx с параметрами EWX_SHUTDOWN (отключение) и 0 (без перезапуска), что инициирует отключение системы.

Обработка ошибок

Код включает в себя механизмы обработки ошибок, чтобы поймать любые ошибки, которые могут возникнуть при выполнении этих шагов. Если возникает ошибка, она поднимает исключение TShutdownEx с описательным сообщением.

Альтернативное решение

Хотя этот код функционирует, есть альтернативные способы достижения функции отключения питания в Delphi:

  1. Использование Windows API: Вместо использования функции ExitWindowsEx можно использовать функции Windows API InitiateSystemShutdown и InitiateSystemShutdownEx, чтобы инициировать отключение системы.
  2. Использование компонента TProcess: В Delphi можно использовать компонент TProcess, чтобы создать процесс, который запускает команду shutdown /s или powercfg -h off, чтобы отключить систему.

Предложения по улучшению кода

Вот некоторые предложения по улучшению кода:

  1. Обработка ошибок: Хотя код включает в себя механизмы обработки ошибок, было бы полезно включить более подробные сообщения об ошибках и механизмы журналирования.
  2. Безопасность: Рекомендуется использовать безопасные практики программирования, такие как проверка ввода пользователя и проверка на null-указатели, чтобы предотвратить потенциальные уязвимости безопасности.
  3. Организация кода: Код мог бы быть лучше организован, с отдельными процедурами или функциями для каждого шага процесса отключения.

В целом, это функциональный фрагмент кода, который демонстрирует, как shut down Windows-систему с помощью Delphi. Однако он может требовать модификаций и улучшений, чтобы соответствовать современным стандартам программирования и лучшим практикам.

Представлен код процедуры Shutdown2 на языке Delphi, которая отключает компьютер и убивает все процессы под управлением Windows.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Компьютер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 01:04:39/0.0032949447631836/0