Echtzeitschutz

  • Hi, ich arbeite derzeit an einen kleinen Echtzeit schutz. Dieser wird dann meinem anderen Programm, AutoRunEX hinzugefügt.

    Jedenfalls hab ich nun wirklich lange gesucht aber ich schaff es einfach nicht.
    Habe wirklich viele funktionen probiert, vieleicht fehlt mir einfach noch das wissen und die Erfahrung.

    So folgendes. Ich habe mit FileDelete gut 2 stunden rumprobiert, doch wie bekomm ich es hin das FileDelete alle Autorun.inf Dateien auf ALLEN Laufwerken AUSER lauferken ohne Datenträger löscht, und dies dan Speichert?

    1. Problem
    Wie mach ich das mit am besten... FileDelete kann ich nur im selbenverzeichniss, durch einen kompletten pfad löschen.
    2. Problem
    Wenn ich versuche das was FileDelete gelöscht hat in ein Logfile zu schreiben sagt er mir nur 1, wenn 1 gelöscht wurde... Ich will aber das der Pfad aufgeschrieben wird...
    3. Problem
    Das ganze soll ohne viel Systembelastung (da sonst keiner n echtzeitschutz für autorun.inf nehmen würde wenn es viel speicher braucht) ablaufen. Und sich eben immer wiederholen (immer weiter nach autorun.inf Dateien suchen)
    [{Bitte fragt nicht zuwas das gut sein soll, ich will es eben haben und im endeffeckt lern ich ja was dabei}]
    4. Problem
    Der Echtzeitschutz soll immer ab und wieder angeschaltet werden können, am besten durchs Trayicon... ist sowas in AutoIT möglich?
    5. Problem
    Wenn eine autorun.inf Datei gefunden wird soll erst nachgefragt werden ob sie gelöscht werden soll.


    Im endeffeckt glaube ich nicht das es so extrem nützlich sein wird, aber ich würde ja so oder so was dazulernen und deswegen kann es ja nicht schaden.

    Aber leider ist es eben viel zu kompliziert für mich.....

    Vieleicht lösungsansätze?

  • Nun wie finde ich jetzt aber Infos dazu?

    Weil bei Googlen finde ich zu z. B. "AutoIT Alle Laufwerke ermitteln" keine wirklichen ergebnisse.
    Wie könnte ich da am besten nachschlagen?

  • Xenobiologist

    Ich nenne das immer: deutsch schreiben, dänisch denken und englisch suchen. Dann kommt man auch mit der Hilfe aus meiner Sicht gut klar. Für alle anderen na klar deutsch schreiben, deutsch denken und englisch suchen. Oder in der Suchfunktion sowohl den deutschen als auch den englischen Begriff eingeben. Es gibt diese kleinen gelben Bücher, wo viele Worte in DEUTSCH & ENGLISCH drinne sind. Früher in der Schule war das ja fast schon pflicht. PONS? Nee, das war das grüne ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Nun das finden der funktionen ist eher nicht das Problem, eher das benutzen.
    Ich nehme als Beispiel:
    Ich suche nach allen Laufwerken. Wie gebe ich die Laufwerke aus?
    Da Google kaum was liefert schau ich in der Hilfe bzw. in den functions.
    Hier finde ich folgendes:

    [autoit]

    $var = DriveGetDrive( "all" )
    If NOT @error Then
    MsgBox(4096,"", "Found " & $var[0] & " drives")
    For $i = 1 to $var[0]
    MsgBox(4096,"Drive " & $i, $var[$i])
    Next
    EndIf

    [/autoit]


    Dann versuche ich mal damit rumzuspielen.
    Ich denke um das zu verstehen wie das funktioniert will ich mal anstatt als MsgBox das ganze in eine Datei schreiben...
    Also

    [autoit]

    $var = DriveGetDrive( "all" )
    If NOT @error Then
    FileWrite( @ScriptDir & "/echtzeit.log",$var[0] & @CRLF)
    MsgBox(4096,"", "Found " & $var[0] & " drives")
    For $i = 1 to $var[0]
    MsgBox(4096,"Drive " & $i, $var[$i])
    Next
    EndIf

    [/autoit]


    Und was wird reingeschrieben? Eine 8... für 8 Laufwerke...
    Die MsgBox gibt alles aus.
    Also probiere ich $var[1] aus. Und siehe da es wird C: in die Datei geschrieben.
    Ja und wie bringe ich nun es dazu alles hineinzuschreiben? Aber das ist ja nichtmal das Problem ich meine
    das ganze soll ja nur die unbenutzten Laufwerke (ohne datenträger) rausfiltern, doch wie mach ich das??
    Ich lese derzeit das Buch von AutoIT von dem Admin hier und muss sagen das ist momentan die einzige Hilfreiche quelle die ich gefunden habe. Das Problem bei der Hilfe ist das zwar Beispiele dabei sind aber eben nur ein beispiel für eine funktion der funktion... Wie man es in solchen fällen einsetzt dazu findet man nichts.

    Und außer ein Tutorial für einen Taschenrechner finde ich kein einziges richtiges tutorial für AutoIT.
    Wenn ich aber jetzt ein Code hätte, der die funktion die ich will ausführt könnte ich diesen durchdenken und durchprobieren bis ich weis was er macht und wie er funktioniert.

    Aber ich finde eben einfach die verbindungen der funktionen nicht herraus..

    Nimmt man an in dem $var wäre nun die anzahl + der name der Laufwerke würde ich dan trozdem rausfinden welches benutzbar ist?

    Dann stellt sich mir die frage, brauch ich das überhaupt oder kann ich AutoIT nicht einfach nach der Autorun.inf über die nicht vorhandenen laufwerke drübersuchen lassen? Gibt es eine funktion die einfach alle Festplatten für eine Datei durchsucht, oder diese löscht?
    in etwa FileDelete("LW\autorun.inf") ?

  • $var[0] enthält in dem Fall nur die Anzahl der Laufwerke, wie du schon festgestellt hast...

    [autoit]

    $var = DriveGetDrive( "all" )
    If NOT @error Then
    For $i = 1 to $var[0]
    FileWrite( @ScriptDir & "/echtzeit.log",$var[$i] & @CRLF)
    Next
    EndIf

    [/autoit]

    So müsste es eigentlich gehen, aber nicht getestet...
    Also damit hast du dann in deiner "echtzeit.log" die ganzen gefundenen Laufwerke stehen...
    Beim Rest kann ich dir auf anhieb leider auch nicht helfen...

    • Offizieller Beitrag

    das ganze soll ja nur die unbenutzten Laufwerke (ohne datenträger) rausfiltern, doch wie mach ich das??

    Vielleicht so:

    [autoit]


    $sNotReady = ''
    $aDrives = DriveGetDrive('ALL')
    If Not @error Then
    For $i = 1 To $aDrives[0]
    If DriveStatus($aDrives[$i]) = 'NOTREADY' Then $sNotReady &= $aDrives[$i] & @CRLF
    Next
    EndIf
    MsgBox(0, 'Laufwerke ohne Datenträger', $sNotReady)

    [/autoit]
    • Offizieller Beitrag

    Hallo,

    wäre es nicht sinnvoller, da es ja ein Echtzeitschutz werden soll, nur auf bestimmten Laufwerkstypen nach den Dateien zu suchen. Ich glaube es macht keinen Sinn jedesmal alle Netzlaufwerke nach einer autorun.inf zu durchsuchen, allein die Datenmenge die durchsucht werden muss verhindert das je ein Echtzeitschutz wird. Ich würde micht auf die Typen Removable, RamDisk (falls vorhanden) und evtl. CDROM (löschen kann man da sowieso nicht) beschränken.

    Es muss auch nicht ständig laufen, man kann ja mit WM_DEVICECHANGE überwachen ob ein neues Gerät angeschlossen bzw. ein Datenträger gewechselt wurde.

  • Ich schau mir gerade die Scriptsamples von euich an und scheue wie sie funktionieren vielen dank!!

    Bernd
    Optimal wäre es natürlich nur die RootPartitionen aller Festplatten zu durchsuchen und immer wenn ein neuer Stick angesteckt wird SOFORT den Zugriff sperren bis er Gescannt ist.
    Aber da Windows so seine macken hat glaube ich nicht das es so möglich ist, deswegen hat mein programm ja (AutoRunEX) die funktion die AutoRun funktion ausszuschalten. Aber der Echtzeitschutz ist eben noch als sicherheitsverstärkung.

    Zitat

    Es muss auch nicht ständig laufen, man kann ja mit WM_DEVICECHANGE überwachen ob ein neues Gerät angeschlossen bzw. ein Datenträger gewechselt wurde.

    Ich glaub das ist weniger gut, denn ich denke das WM_DI... erkennt es auch ur wenn Windows es erkennt. Doch mein Programm wo das eingebaut wird(AutoRunEX) hat ja auch die Funktion Autorun auszuschalten und alles so zu verändern das Windows den Datenträger nur so erkennt das man ihn im Explorer öffnen kann.

    Müsste man versuchen..

    Simmt CDs könnte man eigentlich weglassen, dafür schutzt dann denk ich die funktion wo AutoRun ausschaltet schon genug. Aber Interne und Externe Festplatten müssen (im Rootverzeichniss) schon durchsuchtwerden. Soweit ich weis erkennt Windows autorun.inf Dateien auch von z. B. C:\