Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB.NET] Tärkeiden ohjelmien tunnistus

ErroR++ [12.11.2011 19:30:43]

#

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).)

ErroR++ [24.11.2011 20:06:09]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta