Sådan genstartes programmet automatisk, hvis det går ned i Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan jeg starte mit program automatisk, hvis det går ned på Windows 2003-serveren? Nogle gange kolliderer mit program bare, er der en måde i Windows eller indstillinger, som jeg kan indstille?

Bedste reference


Den sædvanlige tilgang er at køre det, der kaldes en værge -proces. Dette er en separat proces, ofte en tjeneste, der overvåger tilstanden i hovedprocessen. Når vogteren opdager, at hovedtjenesten er død, springer den igen.


Så vidt jeg ved, er der ikke bygget i Windows-funktionalitet til at gøre dette for dig.

Andre referencer 1


Bemærk: At køre selvløbende flagermusfiler kan være nyttige, men medmindre du ved hvad du gør, kan de udføre alle former for kaos. Dette gælder især hvis du kører dem ved opstart. Du er blevet advaret.


Alligevel. Jeg huskede bare noget fra mine 286 dage, da jeg spillede meget rundt med BAT-filer. Hvis du skriver filen


yourprogram.exe
some other event


BAT-filen vil køre din program, og derefter sætte pause og vente i baggrunden, indtil programmet udgår. Derefter kører det 'en anden begivenhed'. Det var en smule irriterende, hvis du ønskede at køre flere ting på én gang, men her er det faktisk nyttigt. Med dette kan du få det til at køre en loop, der genstarter programmet (og genskaber flagermusfilen) som så snart den går ud. Kombiner dette med https://superuser.com/questions/62525/run-a-completlyhidden-batch-fil, og du vil aldrig se det ske. [4]


Den endelige BAT-fil ('restart.bat' i dette eksempel) vil se lidt ud:


c:[location]yourprogram.exe
wscript "C:[location]invisible.vbs" "C:[location]
estart.bat"


Det handler om det. Start programmet (ved opstart via opgave eller endda bare startup-mappe) med linje 2, og dette burde løse dit problem :)


Åh, hvis du vil stoppe sløjfen, skal du bare omdøbe flagermusfilen eller sætte '//' foran de to linjer, gemme den og afslutte programmet.


Hvis det program du kører kræver administratorrettigheder, fandt løsningen jeg brugte psexec (http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx) at køre både programmet og flagermus med forhøjede rettigheder. I så fald ser BAT'en ud: [5]


c:[location]psexec -h c:[location]yourprogram.exe
c:[location]psexec -h wscript "C:[location]invisible.vbs" "C:[location]
estart.bat"


Derefter kører du flagermus som administrator eller kører anden linje (uden psexec-delen) fra task scheduler med forhøjede rettigheder. BEWARE: Kører det som en normal bruger og klikker på 'nej' på UAC-prompten gav mig en BSOD, sandsynligvis fordi den loopede 'kan ikke køre programmet på grund af manglende privilegier' et par milliard gange eller noget :)

Andre referencer 2


Desværre er der ingen indstillinger i Windows for automatisk at genstarte et almindeligt program, når det går ned.


Har du brug for at interagere aktivt med din applikations GUI? Nogle af serviceemballagerne (designet til at køre enhver applikation som Windows Service) overvåger din ansøgning og genstarter den, når den fejler, men sørg for at undersøge session 0 Isolation for at sikre, at det vandt ikke i vejen. [6] [7]

Andre referencer 3


Du må bruge nogle specielle app som BDV SystemEvents eller andre. Det giver dig mulighed for at angive en applikation, som vil blive startet, hvis en anden applikation er lukket. Angiv samme applikation som en betingelse og som en handling, og du får forventede resultater. [8]

Andre referencer 4


Jeg ledte efter noget lignende. Der er to muligheder til at håndtere dette - enten kan du skrive et lille script alene eller bruge noget, som allerede findes.


Efter nogle googling kom jeg på tværs af denne dejlige liste. Bloggeren har samlet omkring 8 værktøjer til automatisk genstart af et crashed eller lukket program. [9]

Andre referencer 5


Du kan bruge RegisterApplicationRestart. [10]



  'Hvis du registrerer dig for genstart, og applikationen møder en
  uhåndteret undtagelse eller ikke lydhør, bliver brugeren tilbudt
  mulighed for at genstarte ansøgningen ansøgningen er ikke
  automatisk genstartet uden brugerens samtykke. '



For automatisk genstart uden brugerintervention er der også RestartOnCrash. Fungerer med alle Windows-versioner. [11]