none
Programm überwachen RRS feed

  • Frage

  • Gibt es eine Möglichkeit, einen Loop/ ein Sub auszuführen, wenn ein bestimmtes Programm gestartet wird, ohne dass der Antivirusprogramm Meldung gibt???

    Bei GetActive.. Function kommt immer Meldung bei Norman.


    LG Yves Riedener
    Mittwoch, 26. Mai 2010 16:33

Antworten

  • Hallo Yves,

    Also mein Antivierenprogramm wird aktiv wenn ich meine WindowsAnwendung starte über debug

    dann ist Dein Antivirenprogramm aber empfindlich oder Dein Code weist Ähnlichkeiten mit einem Virus auf. :-) Ggf. kannst Du das Verzeichnis in dem Deine Projekte liegen/ die Ausgabe erfolgt, vom Scan ausnehmen.

    Ich möchte, dass meine WindowsAnwendung feststellt wenn ein bestimmtes Programm gestartet wird. Also Mein Programm läuft und sobald ich dann z.B. Firefox starte kommt eine Nachricht: Firefox wurde gestartet.

    Da gibt es mehrere Möglichkeiten. Zum Beispiel einen Shell-Hook oder einen CreateProcess Hook. Letzteres dürfte aber indiskutabel sein, da es mit VB nicht möglich ist und selbst erfahrene Entwickler zum Schwitzen bringt. Hier mal die einfachste Variante, die über einen Timer die Liste der laufenden Prozesse abruft und diese mit dem vorherigen Stand vergleicht:

    Public Class Form1
    
     Dim m_ProcessIds As List(Of Integer)
    
     Private Sub Form1_Load(ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                    ) Handles MyBase.Load
    
      m_ProcessIds = New List(Of Integer)
    
      Dim lProcesses() As Process = Process.GetProcesses()
    
      For Each lProcess As Process In lProcesses
       m_ProcessIds.Add(lProcess.Id)
      Next
    
      Timer1.Interval = 500
      Timer1.Enabled = True
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                    ) Handles Timer1.Tick
    
      Timer1.Enabled = False
    
      Dim lProcessIds As New List(Of Integer)
    
      Dim lProcesses() As Process = Process.GetProcesses()
    
      For Each lProcess As Process In lProcesses
       lProcessIds.Add(lProcess.Id)
    
       If Not m_ProcessIds.Contains(lProcess.Id) Then
        Dim lTitle As String = lProcess.ProcessName
    
        Try
         lTitle = lProcess.MainModule.FileVersionInfo.FileDescription
        Catch ex As Exception
    
        End Try
    
        MsgBox(String.Format("{0} wurde gestartet", lTitle))
    
       End If
      Next
    
      m_ProcessIds.Clear()
      m_ProcessIds = lProcessIds
    
      Timer1.Enabled = True
     End Sub
    End Class
    
    
    
    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Yves Riedener Dienstag, 13. Juli 2010 07:58
    Dienstag, 13. Juli 2010 06:58
    Moderator

Alle Antworten

  • Hallo Yves,

    wenn sich ein Virenscanner zu Wort meldet, ist dies meist eine Einstellungssache dieses Virenscanners und kein Problem der Programmierung.

    Ansonsten wäre es hilfreich, Du würdest Deine Beiträge/Fragen so verfassen, dass jeder sie verstehen kann. Nimm Dir also Zeit für Deine Fragen und versuche Dein Problem hinreichend genau zu beschreiben, auch wenn Du selber sicher weißt worum es geht. Nicht eingeweihte, wie wohl die meisten Forumuser hier, mögen unter Umständen nicht wissen welche Methode/welchen Code Du aktuell verwendest, der bei Dir Probleme bereitet. GetActive... sagt mir zumindest so in dem Zusammenhang überhaupt nichts.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Mittwoch, 26. Mai 2010 18:12
    Moderator
  • Also ich werds mal versuchen, getActive.. hat eigentlich nichts damit zu tun.

    Ich möchte, dass mein Programm einen Sub Teil ausführt wenn z.B. Firefox gestartet ist/ gestartet wird.

    Ich werde es jetzt nochmals versuchen, wenn ich den Code habe werde ich ihn hier rein schreiben, wenn ich keinen finde, werde ich mich nochmals melden.


    LG Yves Riedener
    Donnerstag, 27. Mai 2010 09:59
  • Hallo Yves,

    ich muss Thorsten Recht geben. Werde doch mal bitte etwas konkreter. Es wird dir keiner deine Idee stehlen und ausgelacht wurde hier auch noch niemand.
    Wenn ich mir 1 und 1 zusammenreime wird dein Virenprogramm aktiv, bzw. meldet etwas, wenn du deinen Internetbrowser startest bzw. nutzt.
    Dann stellen sich doch folgende Fragen:

    1.       Macht das dein Virenprogramm immer?

    2.       Macht es das nur bei Firefox oder auch bei MS-Internetexplorer?

    3.       Was meldet er denn? Und ist das, was er meldet nicht sogar sein Job?

    4.       Hast du schon mal bei den Einstellungen/Konfigurationen deines Virenscanners nachgesehen, ob du das ändern kannst? Im Normalfall kann man da das Verhalten sehr massiv beeinflussen.

    Wenn ein Programm (welches auch immer) eine Meldung ausgibt, hat sich der Hersteller meist etwas dabei gedacht. Unnötige Meldungen sollten grundsätzlich vermieden werden, die nerven doch nur.
    Also beschreibe uns einfach mal dein Problem und du bekommst sicher konkrete und ausführliche Hilfe.
    Wenn hier aber keiner versteht was du eigentlich möchtest, bleibt deine Frage leider unbeantwortet.

     

     


    Liebe Grüße Stefan
    Sonntag, 11. Juli 2010 01:17
  • Also mein Antivierenprogramm wird aktiv wenn ich meine WindowsAnwendung starte über debug, aber dies lassen wir mal bei seite, denn sonst habe ich keine Probleme mit meinem Antivierenprogramm.

    Also noch zu meiner Frage:

    Ich möchte, dass meine WindowsAnwendung feststellt wenn ein bestimmtes Programm gestartet wird. Also Mein Programm läuft und sobald ich dann z.B. Firefox starte kommt eine Nachricht: Firefox wurde gestartet.


    LG Yves Riedener
    Montag, 12. Juli 2010 11:36
  • Hallo Yves,

    Also mein Antivierenprogramm wird aktiv wenn ich meine WindowsAnwendung starte über debug

    dann ist Dein Antivirenprogramm aber empfindlich oder Dein Code weist Ähnlichkeiten mit einem Virus auf. :-) Ggf. kannst Du das Verzeichnis in dem Deine Projekte liegen/ die Ausgabe erfolgt, vom Scan ausnehmen.

    Ich möchte, dass meine WindowsAnwendung feststellt wenn ein bestimmtes Programm gestartet wird. Also Mein Programm läuft und sobald ich dann z.B. Firefox starte kommt eine Nachricht: Firefox wurde gestartet.

    Da gibt es mehrere Möglichkeiten. Zum Beispiel einen Shell-Hook oder einen CreateProcess Hook. Letzteres dürfte aber indiskutabel sein, da es mit VB nicht möglich ist und selbst erfahrene Entwickler zum Schwitzen bringt. Hier mal die einfachste Variante, die über einen Timer die Liste der laufenden Prozesse abruft und diese mit dem vorherigen Stand vergleicht:

    Public Class Form1
    
     Dim m_ProcessIds As List(Of Integer)
    
     Private Sub Form1_Load(ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                    ) Handles MyBase.Load
    
      m_ProcessIds = New List(Of Integer)
    
      Dim lProcesses() As Process = Process.GetProcesses()
    
      For Each lProcess As Process In lProcesses
       m_ProcessIds.Add(lProcess.Id)
      Next
    
      Timer1.Interval = 500
      Timer1.Enabled = True
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                    ) Handles Timer1.Tick
    
      Timer1.Enabled = False
    
      Dim lProcessIds As New List(Of Integer)
    
      Dim lProcesses() As Process = Process.GetProcesses()
    
      For Each lProcess As Process In lProcesses
       lProcessIds.Add(lProcess.Id)
    
       If Not m_ProcessIds.Contains(lProcess.Id) Then
        Dim lTitle As String = lProcess.ProcessName
    
        Try
         lTitle = lProcess.MainModule.FileVersionInfo.FileDescription
        Catch ex As Exception
    
        End Try
    
        MsgBox(String.Format("{0} wurde gestartet", lTitle))
    
       End If
      Next
    
      m_ProcessIds.Clear()
      m_ProcessIds = lProcessIds
    
      Timer1.Enabled = True
     End Sub
    End Class
    
    
    
    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Yves Riedener Dienstag, 13. Juli 2010 07:58
    Dienstag, 13. Juli 2010 06:58
    Moderator