PassIt2 1.1.0 - Dateien zwischen PCs einfach und bequem übertragen!

  • Dateien zwischen PCs einfach und bequem übertragen.

    PassIt2 bietet euch die Möglichkeit Dateien und Ordner zwischen PCs hin- und herzuschicken und das nur mit zwei Klicks.

    Somit fallen USB-Sticks oder Windows Freigaben vollständig weg.

    Kennst du das, wenn du grad von der Arbeit oder Uni kommst und auf dem Laptop Daten hast die du am Rechner bearbeiten möchtest?

    "Wo war nochmal mein USB-Stick... verdammt, keinen gefunden, vielleicht lad ich es online in einen Filehoster hoch..."

    Spart euch die Sucherei und das Rumgestochere am USB-Port, wenn der Stick auch beim 20 Mal nicht rein möchte.

    Richtet euch PassIt2 einmal ein und profitiert davon, mit jedem anderen PC, welcher ebenfalls PassIt2 laufen hat, Daten auszutauschen.

    Dabei funktioniert das ganze nicht nur im lokalen Netzwerk, sondern auch global! D.h. ihr könnt mit einer Direktverbindung Daten auszutauschen ohne Filehoster dazwischen!

    Features:

    • Dateien lokal oder auch global zwischen PCs austauschen
    • Direkter Start der Übertragung und damit wesentlich schneller als USB-Sticks
    • Dateigrößen nur von der Festplatte limitiert (im Gegensatz zur USB-Stick Kapazität)
    • Geschwindigkeit zum größten Teil nur von der physischen Leitung limitiert
    • Ordnerstrukturen mitsendbar
    • Vielseitig konfigurierbar (Duplikatbehandlung, Aussehen, Autostart, ...)
    • Benutzer einspeichern um Übertragungen automatisch anzunehmen
    • Schnell und bequem übers Kontextmenu senden
    • Active Transfer Mode wenn der Empfänger keine Ports freigeben kann, aber der Sender hingegen schon
    • Geschwindigkeit beim Senden und Empfangen manuell limitierbar
    • DPI-skaliert korrekt und unterstützt sogar Per-Monitor-DPI-Skalierung (unter Windows 10 verfügbar)
    • Schnellhilfe bei allen Einstellungen inkl. beigelegtem pdf-Handbuch
    • OpenSource und toller Quellcode (siehe weiter unten)
    • CC-BY 3.0 DE lizenziert und vollkommen kostenlos

    Weitere Features (welche im Code enthalten sind):

    • Sauberer Code um sich schnell zurechtzufinden
    • Kommentare um einige Zeilen zu erklären die auf den ersten Blick fragwürdig/willkürlich erscheinen
    • Sehr ausführliche Kommentare um einige Funktionen sowie die Ansätze zu den Funktionen zu erklären (siehe _SelectFilesGUI_RecursiveCorrectCheckboxes, Dynamischer Transfer Buffer, Downloadgeschwindigkeit genau berechnen)

    Wie schaut das Programm denn nun aus? Hier sind ein paar Screenshots um einen guten Eindruck zu bekommen.

    Um den Thread nicht zu überfluten packe ich sie in Spoiler.

    Screenshots

    Startoberfläche

    Einstellungen (Benutzer)

    Einstellungen - Allgemein

    Dateien senden mit Ordnerstruktur (über die Hauptoberfläche)

    Dateien übers Kontextmenu senden


    Eingehende Dateianfrage (klick auf "50 files" listet die zu übertragenden Dateien auf)

    Aktueller Fortschritt der Übertragung (detaillierte Ansicht)

    ToDo/Features die vielleicht in kommenden Version implementiert werden
    • Eine chm/html-Hilfe statt pdf (außerdem Deutsche Lokalisation und Englische Anleitung)
    • Android App um Dateien und Ordner an Smartphones zu schicken und zu empfangen
    • Installer anbieten
    • Umfassenderes TrayMenu (Duplikatbehandlung einstellbar etc.)
    • Duplikatbehandlung mit Regeln erweitern (z.B. wenn die Datei neuer ist ersetzen, etc...)
    • Transferverschlüsselung (symmetrisch)
    • eigene Pfade für jeden Benutzer (optional)
    • Speichern von Transfers (Verknüpfung doppelklicken, vordefinierter Transfer startet)
    • an mehrere User senden ("LAN-Party Modus")

    In dem Programm steckt viel Herzblut und Arbeit und ich möchte mich nochmal bei den Betatestern (neun Leute!) bedanken die mir viel Feedback zukommen haben lassen, welches ich implementieren konnte um PassIt2 noch besser zu gestalten.

    Der Vollständigkeit halber würde ich die Threads hier gerne erwähnen: https://autoit.de/index.php?thread/86458 https://autoit.de/index.php?thread/86482

    Special Thanks gehen raus an:

    Musashi  Bitnugger  Lottich  Oscar deaglebeagle

    So, das solls dann auch gewesen sein, weiter gehts mit dem Download! Das eine Archiv beinhaltet das Nötigste (zum Ausführen) und der andere den gesamten Projektbaum.

    Feedback, Lob, Kritik, Feature Requests oder andere Anmerkungen sind gerne gesehen! Wenn du was auf dem Herzen hast, oder etwas was du gerne in dem Programm sehen möchtest, schreibs in den Thread oder per PN.

    Sollte etwas unklar sein, oder sollte jemand Fragen haben stehe ich natürlich gerne bereit. :)

    Vielen Dank und viel Spaß, hoffentlich hab ich nichts vergessen!

    "Warum heißt es eigentlich PassIt2?" - Ich hab vor vier Jahren an dem Programm gearbeitet unter dem namen "PassIt".

    Allerdings habe ich mich damals ziemlich verrannt (nach 90% der Fertigstellung des Codes) und habs nach fehlender Lust es fallen lassen.

    Nun hab ichs vor einigen Monaten (Anfang 2019) wieder aufgegriffen, den gesamten Code neugeschrieben und vernünftig gemacht.

    Das ist also praktisch die 2. Version des Programms, außerdem wird der Name in die Sprache direkt mitintegriert: Pass-It-T(w)o me

    Bisherige Downloads (alte Versionen, bin + src): 25 + 22

  • Habe soeben die neue Version getestet und hier sind mir auch wieder ein paar Dinge aufgefallen...

    Connection/Port:

    - Lösche ich den Inhalt des Inputfeldes mit der Backspace-Taste, wird automatisch wieder der vorherige, gespeicherte Wert eingetragen. Das ist definitiv falsch/unerwünscht, denn ich will ja einen anderen Port eintragen!

    - Für die Angabe des Ports werden in dem Inputfeld nur 4 Ziffern akzeptiert - es müssen aber 5 Ziffern sein (0-65535)! (Bei mir hatte ich in der Beta 60201 als Port eingestellt)

    Linke Seite bei PassIt2 -Settings:

    - Hier würde ich die Reihenfolge ändern: General (macht man immer zuerst!), dann Connection, User, Storage, Apperance, Help und About & Updates.

    Firewall:

    Es erscheint eine Meldung, dass die Firewallregeln geändert werden müssen und der User den nächsten Prompt mit Ja bestätigen soll, damit diese geändert werden können... dieser Promt erscheint allerdings nur, wenn die UAC aktiviert ist - ist dies nicht der Fall, ist die Meldung sehr verwirrend, da der Prompt dann nicht erscheint.

    General:

    - Add users to context menu entry "Send to" - das würde ich noch bei Users als zusätzliche Spalte einbauen, denn dann kann man für jeden User separat entscheiden, ob er im Send to Menu angezeigt werden soll.

    - Enable Active Transfer Mode in context men - hier fehlt das u hinter men

    Nicht gestestet, aber ich vermute mal stark, das du beim Empfang von Dateien die Länge des Zielpfades nicht überprüfst, denn der darf normalerweise ja nicht länger als 259 Zeichen sein. ;)

    Für deine nächsten Projekte... du solltest die Versionsnummer der Beta nicht gleich der finalen Version machen.

    Einmal editiert, zuletzt von Bitnugger (14. Juni 2019 um 17:10)

  • Lösche ich den Inhalt des Inputfeldes mit der Backspace-Taste, wird automatisch wieder der vorherige, gespeicherte Wert eingetragen. Das ist definitiv falsch/unerwünscht, denn ich will ja einen anderen Port eintragen!

    Das passiert nur wenn man das Feld komplett löscht, das hatte ich so implementiert, damit man keine leeren Ports abspeichert (dann muss ich das nicht beim Speichern handlen).

    Aber ich verstehe schon was du meinst, ich werd das fixen. Man solls komplett löschen können aber wenn das Feld den Fokus verliert wirds resettet.

    Für die Angabe des Ports werden in dem Inputfeld nur 4 Ziffern akzeptiert - es müssen aber 5 Ziffern sein (1-65535)! (Bei mir hatte ich in der Beta 60201 als Port eingestellt)

    Das stimmt so nicht, es sind Ports von 1 bis 49000 erlaubt. Da ab 49152 (oder in der Nähe) dynamische Ports anfangen und ich das nicht da reinlaufen lassen wollte hab ich die Grenze bis 49k gewählt.

    Siehe hier: https://stackoverflow.com/questions/1132…owable-for-ipv4

    Ich könnte das ja so basteln, dass dann (sobald man über den höchsten Port hinaus schießt) den größten Port eingetragen bekommt.

    Hier würde ich die Reihenfolge ändern: General (macht man immer zuerst!), dann Connection, User, Storage, Apperance, Help und About & Updates.

    Ja stimmt schon, die Einstellungen werden sowieso noch überarbeitet werden wenn ich bald Regeln für Duplikate implementiere (hab ich noch nicht, weil das zeitlich nicht zu schaffen ist).

    Es erscheint eine Meldung, dass die Firewallregeln geändert werden müssen und der User den nächsten Prompt mit Ja bestätigen soll, damit diese geändert werden können... dieser Promt erscheint allerdings nur, wenn die UAC aktiviert ist - ist dies nicht der Fall, ist die Meldung sehr verwirrend, da der Prompt dann nicht erscheint.

    Wer ist denn so fahrlässig und schraubt sein UAC so weit runter :rolleyes_: Spaß beiseite, stimmt natürlich. Wird gefixt.

    Enable Active Transfer Mode in context men - hier fehlt das u hinter men

    Hab wohl beim hin- und her schieben die Größen irgendwie vergessen. Das Label war zu kurz, jetzt ist es lang genug.

    Add users to context menu entry "Send to" - das würde ich noch bei Users als zusätzliche Spalte einbauen, denn dann kann man für jeden User separat entscheiden, ob er im Send to Menu angezeigt werden soll.

    Weiß ich ehrlich gesagt nicht. Das "Senden an" Menü ist eigentlich ziemlich versteckt, also kann das niemanden stören.

    Wenn ich das bei jedem User individuell mache, dann muss ich die Checkbox für das Anzeigen der User im Kontextmenü entfernen, weil das ja keinen Sinn macht.

    Nicht gestestet, aber ich vermute mal stark, das du beim Empfang von Dateien die Länge des Zielpfades nicht überprüfst, denn der darf normalerweise ja nicht länger als 259 Zeichen sein.

    Guter Einwand, es wird geprüft ob der Shellaufruf 8k Zeichen lang ist um ggf. auf Dateien auszuweichen aber das hab ich wohl vergessen (wie soll man sich auch alles merken).

    Für deine nächsten Projekte... du solltest die Versionsnummer der Beta nicht gleich der finalen Version machen.

    :rofl: lol, du solltest mal meine "Versionsverwaltung" sehen. Da existieren 31 Ordner durchnummeriert von "bak1" bis "bak31".

    Die Versionsnummer der Beta war sowieso nur als Platzhalter gedacht, ich hätte da auch sonst was hinschreiben können.

    Ab jetzt wird richtig versioniert (gibts das Wort überhaupt?), das Schema das ich nutze ist: x.y.z

    x = Hauptversion (wenn kein Rewrite oder extrem große Änderung stattfindet bleibt die gleich)

    y = Featureversion (gibts neue Features? Bspw. Regeln für Duplikate implementiert)

    z = Bugfixversion (musste was kleines gefixt werden? Bspw. 256 Zeichen für die Pfadlänge implementiert & Settingsreihenfolge geändert ~> um 1 erhöhen)

    Danke für die ganzen Funde, ich werd mich da ransetzen und es möglichst bald fixen.

    Ich war mir schon totsicher, dass mir Sachen entgangen sind (sonst wäre ich nie zum Release gekommen), alleine was beim Betatest schon rumgekommen ist.

  • - Enable Active Transfer Mode in context men - hier fehlt das u hinter men

    Das "u" ist schon da, es wird nur abgeschnitten (Feldlänge zu kurz !?)

    GUICtrlCreateCheckbox("Enable Active Transfer Mode in context menu", 184, 136, 225, 17), _

    ( Bitnugger : wahrscheinlich meintest Du das auch so )

    Ich habe das Hauptprogramm spaßeshalber mal auf einem alten Zweitmonitor laufen lassen (1280 x 1024) - da wird dann noch einiges mehr abgeschnitten (auch in anderen Fenstern). Stellt sich allerdings die Frage, ob Monitore mit dieser geringen Auflösung berücksichtigt werden sollten.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ich habe das Hauptprogramm spaßeshalber mal auf einem alten Zweitmonitor laufen lassen (1280 x 1024) - da wird dann noch einiges mehr abgeschnitten (auch in anderen Fenstern). Stellt sich allerdings die Frage, ob Monitore mit dieser geringen Auflösung berücksichtigt werden sollten.

    DPI-Skalierung lässt grüßen. Wollte ich auch implementieren (hab sogar vollständig skalierbare GUI mit dynamisch angepasster Schriftgröße gebastelt) aber es fürs erste aufs Eis gelegt, weil mir das nicht wichtig genug erschien.

    Ich setze es auf die ToDo-Liste.

    Stellt sich allerdings die Frage, ob Monitore mit dieser geringen Auflösung berücksichtigt werden sollten.

    Dass es abgeschnitten wird liegt aber nicht an der Auflösung. Das Fenster werd ich mitskalieren lassen wenn DPI gesetzt ist, oder ich bin so böse und berechne die Ursprungsgröße und anti-dpi-skaliere haha.

  • DPI-Skalierung lässt grüßen. ... Ich setze es auf die ToDo-Liste.

    Mittelfristig sicher eine gute Maßnahme !

    Nicht wenige Anwender haben unter Anzeige 125% oder 150% eingestellt (die Augen werden im Alter ja nicht unbedingt besser ;)). Das würde auch bzgl. Barrierefreiheit einen positiven Eindruck machen.

    Zudem hängt man ältere Monitore gerne mal an Rechner, die i.W. nur Verwaltungsaufgaben haben, also nicht für permanentes Arbeiten verwendet werden. Da ist 1280 x 1024 vielleicht doch nicht so exotisch.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Wenn ich das bei jedem User individuell mache, dann muss ich die Checkbox für das Anzeigen der User im Kontextmenü entfernen, weil das ja keinen Sinn macht.

    Ja, genau, das war der Plan...


    Ab jetzt wird richtig versioniert (gibts das Wort überhaupt?), das Schema das ich nutze ist: x.y.z

    Ja, gibt es... und hey... gib's zu... x.y.z... du hast bei mir abgekupfert... denn ich mache es genau so! 8o

    Das "u" ist schon da, es wird nur abgeschnitten (Feldlänge zu kurz !?)

    GUICtrlCreateCheckbox("Enable Active Transfer Mode in context menu", 184, 136, 225, 17), _

    ( Bitnugger : wahrscheinlich meintest Du das auch so )

    Ja, habe mir den Quellcode noch nicht angeschaut, es aber so vermutet.

    Ich habe das Hauptprogramm spaßeshalber mal auf einem alten Zweitmonitor laufen lassen (1280 x 1024) - da wird dann noch einiges mehr abgeschnitten (auch in anderen Fenstern). Stellt sich allerdings die Frage, ob Monitore mit dieser geringen Auflösung berücksichtigt werden sollten.

    Ich arbeite seit 07.2017 an einem Projekt, bei dem ich mit verschiedenen Auflösungen (1280 x 720 bis 1920 × 1200) hantiere, bei kleineren Auflösungen wird die Anwendung mit einer Fehlermeldung beendet, weil es sonst zu Anzeigeproblemen kommt, bzw. die Schrift so klein wäre, dass sie nicht mal ein Adler lesen könnte. Welche Auflösungen unterstützt werden sollten, ist aber wohl hauptsächlich abhängig von der Anwendung bzw. liegt im Ermessen des Programmierers.

  • Im Traymenu des PassIt2Workers könntest du noch einen Punkt hinzufügen: PassIt2 Configuration/Settings

    Umfassenderes TrayMenu (Duplikatbehandlung einstellbar etc.)

    :whistle:

    Ich werd die Tage (heute schaffe ich das leider nicht mehr, da ich gleich weg bin) noch ein Update bringen um die Kleinigkeiten (Inputs, UAC, Dateilänge, ...) zu fixen.

  • Updatealarm! 1.0.1 ist nun verfügbar, und im Startpost ist nun ein Changelog einsehbar.

  • alpines 15. Juni 2019 um 14:58

    Hat den Titel des Themas von „PassIt2 1.0.0 - Dateien zwischen PCs einfach und bequem übertragen!“ zu „PassIt2 1.0.1 - Dateien zwischen PCs einfach und bequem übertragen!“ geändert.
  • _WM_COMMAND

    Bei jedem Case fragst du mit _WinAPI_HiWord($wParam) = 0x200... ($iCode) warum nicht vorher einmalig abfragen und den Switch nur ausführen, wenn $iCode = 0x200?

    Wenn du beim Erstellen der hier zu überprüfenden Inputs noch den Style $ES_NUMBER hinzufügst, kannst du dir das ganze Gedöns mit Number und RegEx sparen.

    Entferne doch bitte noch den Filter für den Port, denn letztlich sollte der User entscheiden dürfen, welche Ports er verwenden will - ich will z.B. welche aus dem Bereich 50000-65000 nehmen, möglich sollten aber alle sein, also Port 0-65535.

  • Es gibt noch so einige Sachen die ich noch nicht verändert hab aber die noch kommen, werden. Mit der Code-Struktur bin ich ansich noch nicht ganz zufrieden (in einigen Teilen, der Rest gefällt mir bisher gut).

    Das Abfragen der Pfadlänge und ob der Pfad überhaupt beschreibbar ist werde ich zusammenlegen, das gefällt mir nicht, das sind zwei fast identische Code-Blöcke.

    Bei dem Beispiel was du aufgezählt hast hätte ich auch alle betreffende Controls inkl. Limitierungen in ein Array packen können, dann hätte ich mir dadurch auch Code gespart.

    Aber der Teil ist noch nicht ganz fertig (siehe weiter unten).

    Bei jedem Case fragst du mit _WinAPI_HiWord($wParam) = 0x200... ($iCode) warum nicht vorher einmalig abfragen und den Switch nur ausführen, wenn $iCode = 0x200?

    Wenn du genauer hinsiehst, dann siehst du, dass der Switch (oder besser die Zeilen) nicht nur ausgeführt wird wenn das Control verlassen wird, also HiWord von wParam 0x200 ist (habs mal auf $EN_KILLFOCUS umgeschrieben, hatte den Wert 0x200 einfach aus der Konsole).

    Die Zeile dadrunter bpsw. If StringRegExp($sPort, "[^\d]") Then GUICtrlSetData($hSettingsGUI_ConnectionPage_Port, StringRegExpReplace($sPort, "[^\d]", "")) sort dafür, dass man außer Zahlen nichts eintippen kann.

    Das Eingabefeld akzeptiert nur Zahlen und lässt man es frei, wird es erst resettet wenn man es verlässt. Ich möchte nicht, dass man in einem Portfeld Buchstaben oder sonst was eintragen kann.

    Das Löschen muss direkt passieren und nicht erst im Nachhinein, es soll halt wie eine Inputmask funktionieren.

    $ES_NUMBER hatte ich bereits in Betracht gezogen, aber mich störte dort der Tausenderseparator und statt die Hälfte der Arbeit von dort zu übernehmen, und die andere Hälfte selber zu schreiben wollte ich da noch Balloontooltips anzeigen lassen damit man sieht, was man dort eintragen darf.

    Entferne doch bitte noch den Filter für den Port, denn letztlich sollte der User entscheiden dürfen, welche Ports er verwenden will - ich will z.B. welche aus dem Bereich 50000-65000 nehmen, möglich sollten aber alle sein, also Port 0-65535.

    Das werde ich auch machen, letztlich ist es die Entscheidung des Users welchen Port er verwenden möchte.

    Eine Warnung werde ich vermutlich trotzdem hinzufügen, sonst sucht man sich dort die Finger wund wenn man ein spezielles Setup am Laufen hat.

    Für die Kleinigkeiten werde ich vorerst kein Update pushen, compile dir am besten einfach den Source neu (oder setz den Port in der configuration.ini. Der Worker überprüft das ja nicht :rolleyes_:).

    Was momentan in der Pipeline ist:

    • Balloontooltips für Inputmasks
    • Überprüfung der Dateipfadlänge und Beschreibbarkeit sinnvoll zusammenlegen (ist doch blöd wenn ich einen Pfad auswähle und er dann sagt "ist nicht beschreibbar")
    • Relative Pfade zulassen (ebenfalls wichtig für Punkt2, dass die Pfade dann erweitert werden für die Überprüfung) um das Programm portabel zu machen.
    • DPI-Skalierung

    Danke dir für das Feedback :thumbup:

  • alpines 24. Juni 2019 um 21:48

    Hat den Titel des Themas von „PassIt2 1.0.1 - Dateien zwischen PCs einfach und bequem übertragen!“ zu „PassIt2 1.1.0 - Dateien zwischen PCs einfach und bequem übertragen!“ geändert.
  • Tut mir leid, dass es so lang gedauert hat, aber die DPI-Skalierung hat mich wahnsinnig gemacht. Da waren so viele Fälle zu berücksichtigen und dann zickten auch noch Controls willkürlich rum.

    Jetzt hab ich es einigermaßen implementiert bekommen, aber es sind noch einige Unstimmigkeiten vorhanden (Icon in der TransferCompletedGUI skaliert mit, aber Icon selbst bleibt klein).

    Würde mich freuen wenn ihr das testen könntet, hoffentlich hab ich an alles gedacht (wovon ich nicht ausgehe).

  • (eher was für die ShoutBox, aber da tippt es sich so nervig ;)) :

    Beim Kompilieren erhalte ich unter AutoIt V.3.3.14.0 / Win 7 folgende Konsolenmeldung :

    ! Invalid AutoIt3Wrapper directive Keyword:#AutoIt3Wrapper_Res_ProductName with value:PassIt2

    (-> bei PassIt2.exe und PassIt2Worker.exe)

    Grund ist die Anweisung #AutoIt3Wrapper_Res_ProductName=PassIt2.

    Als Folge bleibt unter Eigenschaften -> Details der Produktname unbesetzt.

    Verwendet man die Syntax #AutoIt3Wrapper_Res_Field=ProductName|PassIt2 , dann passt es.

    Siehe : https://www.autoitscript.com/forum/topic/17…comment=1259069 (ff.)

    (möglicherweise ist das bei Win 10 und/oder AutoIt > 3.3.14.0 anders)

    Nur eine Kleinigkeit, aber es soll ja alles möglichst perfekt werden :P

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Jap, das ist mir beim Kompilieren auf meinem Laptop auch aufgefallen, da hab ich auch noch eine ältere Version drauf.

    Die 3.3.14.5 beschwert sich dort allerdings nicht, aber da ich die Includes so gehalten habe, dass die 3.3.14.0 funktionieren soll hab ich die Direktive mal angepasst.

    Wird ins nächste Update mitaufgenommen.

    Danke fürs Berichten :)

  • Windows Defender Firewall mit erweiterter Sicherheit (Win 10) hat die PassIt2Worker.exe als Trojaner erkannt und in Quarantäne geworfen... PassIt2.exe merkt zwar, dass die PassIt2Worker.exe nicht auffindbar ist, doch das Symbol für den Button wird trotzdem so geändert, als wenn er gestartet worden wäre.

  • Blöder WinDefender.

    Eine Extraabfrage ob die Worker-Exe existiert bzw. gestartet wurde werde ich hinzufügen.

    Wollte mir da generell noch Gedanken machen, da es sein kann, dass der Background Worker nicht startet wenn eine Datei gerade gesendet wird.

    Die nächste Version werde ich dann auch mal beim WinDefender Team einschicken damit diese sie dann als sicher markieren können.