Buongiorno, come forse saprete in Windows 2003 Server ci sono le licenze CAL per usufruire di servizi vari da client. Una volta raggiunte le CAL non si può più usufruire di questi servizi, a meno che non venga arrestato il servizio dalla gestione servizi del Win 2003 stesso. Poco tempo fa ho fatto un programmino che terminava ogni 10 minuti il servizio inerente le CAL che si chiama llssrv.exe e ha sempre funzionato fino a che Win 2003 ha considerato grave la caduta del processo decidendo di spegnere il server automaticamente. Prima facevo questa cosa:

Public Class Form1

Public Processo As Process()

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Processo = Process.GetProcessesByName(txtProcesso.Text, My.Computer.Name)

If processo.Length > 0 Then

Processo(0).Kill()

End If

End Sub

Private Sub btnConferma_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnConferma.Click

Dim millisecondi As Double

millisecondi = txtTimer.Text * 1000

Timer1.Interval = millisecondi
Timer1.Start()
lblTime.Text = "Avviato!"
End Sub


Private Sub btnStop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnStop.Click

Timer1.Stop()
lblTime.Text = "Arrestato!"
End Sub

End Class

così funzionava, ma la Kill è un modo troppo violento di chiudere un processo e questo Windows 2003 non lo tollera....ora invece faccio così:

Public Class Form1

Public Processo As Process()

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick


For Each obj In GetObject("winmgmts:").ExecQuery("Select * FROM Win32_Process WHERE Name='" & txtProcesso.Text & "'")
obj.terminate()
Next


End Sub

Private Sub btnConferma_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnConferma.Click

Dim millisecondi As Double

millisecondi = txtTimer.Text * 1000

Timer1.Interval = millisecondi
Timer1.Start()
lblTime.Text = "Avviato!"
End Sub


Private Sub btnStop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnStop.Click

Timer1.Stop()
lblTime.Text = "Arrestato!"
End Sub

End Class

ma questa volta non mi termina il processo nemmeno se la faccio eseguire ogni secondo...termina processi semplici tipo il taskmgr, oppure l'internet exlporer, ma non llssrv.exe...come posso fare per far terminare questo processo in maniera pulita?