none
Уничтожение процесса завершения работы RRS feed

  • Общие обсуждения

  • Здравствуйте. Мне нужно сделать так, чтобы при завершении работы, работу не завершать.

    Пробовал и  через хуки и через события

    WMEndSession
    WMQueryEndSession 

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

    т.е. у меня окно завершения стопорится на моменте "такие то приложения не закрылись. Закрыть их принудительно?". Можно ли как то через winapi в этот момент отменить выключение ну либо kill process какой?


    28 декабря 2013 г. 17:02

Все ответы

  • обычно такие вещи используются в антивирусах типа касперский. 

    uses
      JwaWindows,
      JwsclSecureObjects,
      JwsclDescriptor,
      JwsclToken,
      JwsclTypes,
      JwsclAcl,
      JwsclKnownSid;
    var
      SD : TJwSecurityDescriptor;
      hProcess : TJwProcessHandle;
    begin
      JwInitWellKnownSIDs;
      hProcess := OpenProcess(READ_CONTROL or WRITE_DAC, false, GetCurrentProcessId());
      if hProcess <> 0 then
      try
        SD := TJwSecureGeneralObject.GetSecurityInfo(hProcess,SE_KERNEL_OBJECT, [siDaclSecurityInformation]);
        try
          SD.DACL.Clear;
          SD.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [], GENERIC_ALL, JwLocalSystemSID));
          //allow read access to the current user
          SD.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [], GENERIC_READ, JwSecurityProcessUserSID));
          TJwSecureGeneralObject.SetSecurityInfo(hProcess, SE_KERNEL_OBJECT, [siDaclSecurityInformation], SD);
        finally
          SD.Free;
        end;
      finally
        CloseHandle(hProcess);
      end;
    end;

    источник

    29 декабря 2013 г. 17:18
  • Мне нужно сделать так, чтобы при завершении работы, работу не завершать

    я и привел ссылку где решается подобная проблема

    30 декабря 2013 г. 5:44