mmm

ti posso postare un po di codice C# che dovresti convertire in codice VB.NET cmq è molto semplice

codice:
private void SessionEndingManager(object sender, SessionEndingEventArgs e)
{
	MessageBox.Show("Impossibile terminare la sessione mentre " + Application.ProductName + " è attivo, chiudere prima il software!", Application.ProductName + " - Errore", MessageBoxButtons.OK, MessageBoxIcon.Warning);
	e.Cancel = true;
}

SystemEvents.SessionEnding +=new SessionEndingEventHandler(SessionEndingManager);
in pratica devi impostare l'evento SessionEnding di SystemEvents e poi, ovviamente, gestirlo.

il codice lo preferisco all'altro perché è totalmente managed e quindi anche più portabile ed evita anche possibili rogne tra i diversi sistemi operativi windows dovuti magari ad una diversa gestione interna

Il sistema, prima di chiudersi, chiede ai vari applicativi se può chiudersi e quindi usando SessionEnding non dovresti avere grossi problemi

per maggiori informazioni:
http://msdn.microsoft.com/library/it...ndingtopic.asp