c # - Delay Windows logoff (XP, Vista &7)

Indlæg af Hanne Mølgaard Plasc

Problem



Er der en kendt og pålidelig måde at forsinke en bruger til at logge ud, når de har klikket på logout-knappen? Jeg spekulerer på, hvordan jeg kunne gå på at forsinke eller muligvis annullere logouten og logge ud gennem ansøgningen, når tælleren er udløbet.

Bedste reference


Når en logout er ved at ske, sendes Windows-meddelelsen WM\_QUERYENDSESSION til alle applikationer. En ansøgning kan svare på denne meddelelse med et negativt svar og beder om, at logoffet annulleres.


Fra MDSN-dokumentet: [6]



  Applikationer skal respektere brugerens hensigter og returnere SAND
  default, returnerer funktionen DefWindowProc TRUE til denne meddelelse.

  
  Hvis nedlukning ville ødelægge det system eller det medie, der er
  brændt, kan applikationen returnere FALSE. Det er dog god praksis
  at respektere brugerens handlinger.



I .NET er denne funktionalitet udsat for SystemEvents.SessionEnding -begivenheden. Hvis du indstiller Cancel egenskaben til SessionEndingEventArgs til true, beder logoffet blive annulleret. [7]


Logoff-delen er blevet bedt om før i Log af bruger fra Win XP programmatisk i C #.