Moi!
Mitenköhän saan ohjelmia eroteltua kahteen ryhmään siten, että tärkeät ohjelmat (esim. F-Securen ohjelmat ja järjestelmäprosessit) toiseen ja muut toiseen? Minulla on projektissani seuraavat funktiot:
Public Function GetSystemProcesses(ByVal sysList As ListBox, ByVal list As ListBox) As Integer 'gettaa kaikki järjestelmäprosessit Dim pList() As Process Dim i1 As Object = sysList.SelectedItem Dim i2 As Object = list.SelectedItem sysList.Items.Clear() list.Items.Clear() pList = Process.GetProcesses() For Each myProcess As Process In pList Try GetSystemProcesses = myProcess.ProcessorAffinity 'jos tässä ei tule Win32Exceptionia "Käyttö estetty", niin prosessi on joutava list.Items.Add(myProcess.ProcessName & ".exe") Catch ex As Exception sysList.Items.Add(myProcess.ProcessName & ".exe") 'mutta tähän tulee prosessit joita ei saa sorkkia End Try Next sysList.SelectedItem = i1 list.SelectedItem = i2 Return sysList.Items.Count End Function Public Sub KillAllProcesses(ByVal list As ListBox) 'tapetaan kaikki listin sisältämät prosessit (tässä tapauksessa ohjelman käyttäjä voi napautta painiketta jolloin se tappaa muut kuin järjestelmäprosessit) Dim p As Process For i = 0 To list.Items.Count list.SelectedIndex = i Try p = Process.GetProcessesByName(Global.Microsoft.VisualBasic.Left(list.SelectedItem.ToString(), list.SelectedItem.ToString().Length - 4))(0) If p.ProcessName = "QuickD" Then Continue For 'ohjelman nimi on "QuickD" (Quick Diagnostics) p.CloseMainWindow() 'suljetaan ikkuna (jos sitä ikkunaa edes on olemassa) p.WaitForExit(250) 'odotetaan hetki ja poistutaan p.Kill() 'varmuuden vouksi vielä lopputoimien päälle tapetaan prosessi Catch ex As Exception 'catchikaan ei auta jos yrittää lopettaa F-Securen prosesseja koska DeepGuard huomaa (niitten pitäisi mennä Systeemilistaan) MsgBox(ex.Message, 16, "Error") Continue For End Try Next End Sub
EDIT: Tuota voisi muuttaa vähän niin, että se tunnistaisi vain tärkeät prosessit (tässä vaiheessa huomaa että systeemilistaan tulee myös joitain aivan turhia prosesseja, kuten "mwlDaemon" (MyWinLocker).)
Juu, sehän on helppoa.Näin pseudokielisenähän se olisi että ensin tutkitaan niitten ProcessorAffinityt ja jos menee Catchiin, tarkistetaan onko ajettavanm tiedoston polussa jotakin 'C:\WINDOWS' yms. Jos on, se on järjestelmäprosessi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.