Linguaggio utilizzato: Visual Basic 2008 Express Edition.
Buongiorno, ho la necessità di arrestare un servizio di rete di Win 2003. Poco tempo fa ho fatto un programmino che terminava ogni 10 minuti il processo interessato e ha sempre funzionato fino a che Win ha considerato grave la caduta del processo decidendo di spegnere il server automaticamente. Prima facevo questa cosa:
così funzionava, ma la Kill è un modo troppo violento di chiudere un processo e questo Windows 2003 non lo tollera....ora invece faccio così:codice: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
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 quello che mi interessa...come posso fare per far terminare questo processo in maniera pulita?codice: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
Premetto che tale processo si può tranquillamente chiudere dalla gestione dei servizi di windows semplicemente facendo click su "Arresta" senza alcuna limitazione.

Rispondi quotando