C # Windows 7 uruchom exe przed zamknięciem komputera

2

Chcę uruchomić plik wykonywalny, który zapisuje plik XML na dysku lokalnym, zanim komputer (działający w systemie Windows 7) zostanie zamknięty.

Wiem, że możliwe jest uruchamianie skryptów przed wyłączeniem. Można to skonfigurować w Edytorze lokalnych zasad grupy w obszarze Konfiguracja komputera -> Ustawienia systemu Windows -> Skrypty (uruchamianie / zamykanie).

Próbowałem umieścić mój plik wykonywalny we właściwości shutdown, ale to nie działa. Jak mogę uruchomić plik wykonywalny, zanim komputer zostanie zamknięty? Jak mogę podłączyć zdarzenie zamknięcia?

użytkownik1743843
źródło
Czy próbowałeś zobaczyć, dlaczego to nie działa w dzienniku systemu?
Czy wypróbowałeś to również przy użyciu harmonogramu zadań?

Odpowiedzi:

7

Rozpoczęcie procesu, gdy zainicjowano zamknięcie, jest złym pomysłem. Na tym etapie najbardziej prawdopodobnym rezultatem jest odzyskanie błędu 1115ERROR_SHUTDOWN_IN_PROGRESS .

Znacznie lepszym sposobem jest zainstalowanie usługi i zarejestrowanie usługi, aby otrzymywać powiadomienia o zamykaniu za pośrednictwem RegisterServiceCtrlHandlerEx, patrz zamykanie:

Aplikacje serwisowe otrzymują powiadomienia o zamknięciu w swoich procedurach obsługi. Aby zarejestrować moduł obsługi usług, użyj RegisterServiceCtrlHandlerExfunkcji.

Usługa AC # zrobiłaby to, ustawiając wartość CanShutdowntrue, a następnie obsługując OnShutdownzdarzenie. Ważne jest, aby być usługą, a nie aplikacją, ponieważ zamknięcie może nastąpić, gdy żadna sesja nie jest zalogowana i / lub może wystąpić wiele sesji, gdy nastąpi zamknięcie.

Remus Rusanu
źródło
To nie zawsze działa. Ustawiłem CanShutdown na true, zaimplementowałem OnShutdown, który zapisuje do prostego pliku. Plik nigdy nie jest zapisywany. Usługa działa jako system lokalny, więc wiem, że ma uprawnienia.
jjxtra