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

"Блокировка автозагрузки Windows 10: защита критически важного ПО"

Delphi , Синтаксис , Справочник по API-функциям

Блокировка автозагрузки Windows 10: защита критически важного ПО

Работая с "mission-critical" программным обеспечением, которое выполняется в операционной системе Windows, важно обеспечить непрерывность его работы, так как прерывание процесса может привести к финансовым потерям. В прошлом для предотвращения автоматической перезагрузки после обновлений Windows использовался параметр в реестре, который работал для Windows Vista, 7 и 8/8.1. Однако с выходом Windows 10, в том числе обновления Creators Update, этот способ перестал быть эффективным.

В ходе исследования было найдено решение, которое позволяет предложить пользователю запланировать время для обновления вместо автоматического выполнения, когда Windows считает это уместным. Для программной настройки Windows 10 так, чтобы она не выполняла автоматическую перезагрузку, можно использовать различные подходы.

Альтернативный ответ

Один из способов - использование групповых политик и политик домена. Это не требует написания кода и является простым решением в домене, где можно настроить сервисы обновлений для кэширования и распространения обновлений. Однако, это решение подходит для системного администратора, а не для программиста, который хочет внести изменения в свою программу.

Подтвержденный ответ

Существует возможность использовать API для блокировки перезагрузки. Функция ShutdownBlockReasonCreate предназначена для начала операции, которая не может быть прервана, например, запись на CD или DVD. После завершения операции следует вызвать функцию ShutdownBlockReasonDestroy, чтобы указать системе, что перезагрузка может быть выполнена.

Пример кода на Object Pascal (Delphi)

unit Unit1;

// Объявление функций для работы с API
interface
  function ShutdownBlockReasonCreate(hWnd: HWND; Reason: LPCWSTR): BOOL; stdcall; external 'user32';
  function ShutdownBlockReasonDestroy(hWnd: HWND): BOOL; stdcall; external 'user32';
  function GetLastError: DWORD; stdcall; external 'kernel32';

implementation

uses
  SysUtils, Winapi.Windows;

procedure TForm1.BlockShutdown;
var
  ErrorCode: DWORD;
begin
  if not ShutdownBlockReasonCreate(Application.MainForm.Handle, 'Super Critical Job') then
  begin
    ErrorCode := GetLastError;
    ShowMessage('Ошибка блокировки перезагрузки: ' + IntegerToHex(ErrorCode, 8));
  end;
  // Начало критической операции
  // ...

  // Завершение критической операции
  // ...
  if not ShutdownBlockReasonDestroy(Application.MainForm.Handle) then
  begin
    ErrorCode := GetLastError;
    ShowMessage('Ошибка снятия блокировки перезагрузки: ' + IntegerToHex(ErrorCode, 8));
  end;
end;

end.

Также стоит упомянуть, что использование WMQueryEndSession может помочь в предотвращении перезагрузки во время критической операции, но это не следует использовать как основной метод, так как он может блокировать только пользовательскую перезагрузку, а не автоматическую перезагрузку, вызванную обновлением Windows.

Заключение

Для защиты критически важного ПО от неожиданных перезагрузок после автоматических обновлений Windows 10, программисты могут использовать различные методы, включая настройку групповых политик, использование API для блокировки перезагрузки и другие. Важно помнить, что любое вмешательство в процесс обновления системы должно быть согласовано с пользователем и проводиться с пониманием возможных рисков для безопасности системы.

Создано по материалам из источника по ссылке.

Описание "Context": Приведены способы блокировки автоматической перезагрузки Windows 10 для защиты критически важного программного обеспечения при обновлениях системы.


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

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




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


:: Главная :: Справочник по API-функциям ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:10:58/0.0034029483795166/0