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?