[VB2010] Klick auf (Netz)laufwerk in "Computer" abfangen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von vbUser936.

    [VB2010] Klick auf (Netz)laufwerk in "Computer" abfangen

    Hallo,
    ich besitze seit kurzem einen NAS und möchte diesen beim Öffnen des Netzlaufwerks auf einem Windows7-PC per WakeOnLan aufwecken. Das Aufwecken an sich funktioniert, momentan hänge ich jedoch an dem Problem wie ich mit VB erkennen kann, dass der Nutzer gerade versucht hat, das Netzlaufwerk in "Computer" zu öffnen. Es handelt sich ausschließlich um Windows7-PCs, bei denen ich diese Funktionalität benötige. Als "Notlösung" könnte ich natürlich auch auf dem Desktop eine Verknüpfung zu meinem Programm erstellen und damit den NAS aufwecken und dann das Netzlaufwerk per VB öffnen. Ich wollte nur eigentlich keine zusätzlichen Verknüpfungen, sondern das ganze so gestalten, dass der Benutzer eigentlich nichts von den Vorgängen im Hintergrund bemerkt, da der NAS nur ca. 3 Sekunden zum Aufwachen braucht. Also Benutzer öffnet Netzlaufwerk -> mein Programm weckt im Hintergrund den NAS auf und nach 3 Sekunden Wartezeit ist das Netzlaufwerk verfügbar.
    Gibt es da mit VB irgendeine Möglichkeit zu erkennen, dass ein Laufwerk geöffnet wurde? Erkennungen anhand der Titel geöffneter Fenster beispielsweise funktionieren hier eben leider nicht, da der Explorer ja erst ins Netzlaufwerk wechselt, wenn es auch verfügbar ist. Ich habe leider zu diesem Problem bis jetzt nichts brauchbares gefunden :(
    Aber vielleicht hat ja hier jemand eine Idee, wie man das Ganze angehen könnte :)
    Willkommen im Forum. :thumbup:

    vbUser936 schrieb:

    dass der Benutzer eigentlich nichts von den Vorgängen im Hintergrund bemerkt
    Genau hier könnte es sein, dass eine mögliche Lösung Deines Problems für andere, die Schadsoftware erstellen möchten, ebenso eine Lösung ist.
    Solch solten wir hier nicht unterstützen. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    nafets3646 schrieb:

    Inwiefern

    vbUser936 schrieb:

    dass der Benutzer eigentlich nichts von den Vorgängen im Hintergrund bemerkt
    Für einen ersten Post ganz schön gewagt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich verstehe nach wie vor die Aufregung nicht.
    "dass der Benutzer eigentlich nichts von den Vorgängen im Hintergrund bemerkt" soll doch nur heißen, dass der Benutzer auf das Icon klickt und vom Programm im Hintergrund ein Vorgang (WOL -> NAS) ausgeführt werden soll, ohne dass der Nutzer extra Aktionen ausführen muss.
    Ich verstehe auch nicht, was daran problematisch sein soll. Ich möchte doch lediglich eine Aktion ausführen, wenn der Benutzer ein Laufwerk öffnet. Mein Problem unterscheidet sich jedoch von dem oft gefragten "Datei beim Einstecken von USB-Stick ausführen"-Problem, da ich eben auf den PCs hier im Haus ein Programm haben möchte, das ständig im Hintergrund läuft, und falls das Netzlaufwerk geöffnet wird ein Magic Packet verschickt. Also kein Programm vom Laufwerk ausführen. Ich kopiere das Programm ja manuell auf die PCs. Anstatt eine Aktion erst beim Öffnen des Netzlaufwerks auszuführen könnte ich genauso gut direkt schädlichen Code ausführen wenn das mein Ziel wäre. Also ich kann die Bedenken wirklich nicht nachvollziehen.

    vbUser936 schrieb:

    Also ich kann die Bedenken wirklich nicht nachvollziehen.

    RodFromGermany schrieb:

    dass eine mögliche Lösung Deines Problems für andere, die Schadsoftware erstellen möchten
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja. Aber nochmal: Ich verstehe nicht, wie das, was ich möchte schädlich sein könnte. Nur als Beispiel: Wenn ich das ganze nicht für ein Netzlaufwerk sondern für Laufwerk C: haben wollen würde: Da sich dieses ja sofort öffnet, könnte ich einfach schauen, ob unter den geöffneten Fenstern eins mit dem Titel "Lokaler Datenträger (C:)" ist. Beim Netzlaufwerk geht das leider nicht, da es sich erst öffnet, wenn der NAS schon läuft. Jetzt ist es doch eigentlich egal, ob ich das öffnen vom Laufwerk C: oder vom Netzlaufwerk X: erkennen möchte, C: bekomme ich ganz einfach hin, für X: brauche ich eben eine andere Möglichkeit, weil die von C: nicht funktioniert. Das einzige was ich demnach suche ist eine Möglichkeit zu erkennen, dass X: geöffnet wurde. Und da ich nicht weiß, was an der Erkennung von C: mittels Fenstertitel missbrauchbar sein soll, verstehe ich auch nicht, was an einer anderen Möglichkeit, das Öffnen von einem Laufwerk zu erkennen missbrauchbar sein soll.

    vbUser936 schrieb:

    was ich möchte
    Du bekommst eine Lösung, die andere für ihre, nicht aber für Deine Zwecke missbrauchen können.
    Das hat nix mit Dir zu tun, sondern mit möglichen anderen, denen wir nicht zeigen wollen, wie iwas gemacht werden könnte.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja das habe ich schon verstanden. Was aber ist problematisch daran, eine bestimmte Nutzeraktion zu erkennen? Dann kann ich das Programmieren doch auch gleich lassen, weil jede Funktion irgendwie missbräuchlich genutzt werden könnte. Dann dürfte mir auch keiner verraten, wie ich mit VB Dateien herunterladen und auf der Festplatte speichern kann, weil ich ja theoretisch einen Virus nachladen könnte. Ich kann leider nach wie vor deine Argumentation nicht nachvollziehen. :/

    vbUser936 schrieb:

    dass der Benutzer eigentlich nichts von den Vorgängen im Hintergrund bemerkt
    wo z.B. Trojaner und all solch und so weiter
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich könnte diesen "Vorgang im Hintergrund" ja genauso gut beim Systemstart, wenn der Benutzer Fenster XY öffnet, wenn der Benutzer in diesen oder jenen Bereich des Bildschirms klickt..... ausführen. Dann würde er allerdings in meinem Fall nicht seinen Zweck erfüllen, da der Server eben nicht aufgeweckt werden soll, wenn der Benutzer in die linke obere Ecke des Bildschirms klickt, sondern wenn er versucht das Netzlaufwerk zu öffnen. Wie schon gesagt, für ein Fenster, das sich direkt öffnet wäre diese Erkennung ja auch kein Problem, nur beim Netzlaufwerk geht es eben so nicht. Ich würde nur wirklich gerne mal wissen, was an der von mir gesuchten Funktion missbräuchlich nutzbar sein sollte. Ob ich als böser Programmierer meinen Schadcode jetzt beim Öffnen von Laufwerk C: ausführe (was ich ja über die Fenstertitel recht einfach erkennen kann) oder ob ich das tue, wenn Netzlaufwerk X: geöffnet wird (was aber schwieriger zu erkennen ist und weshalb ich hier ein Thema gestartet habe), es kommt doch aufs gleiche raus.
    Ich kann @RodFromGermany diesmal auch nicht so recht verstehen, immer den selben Post bringen ohne wirkliche "Begründung"
    Es ist ja nicht ansatzweiße so schwer ein process zu verbergen darum geht es @vbUser936 doch nicht mal hauptsächlich will er so gesehen NUR prüfen ob der User ein Netzwerk Ordner öffnen will oder sehe ich das falsch?!
    Er fragt ja nicht "Wie mache ich das Programm Unsichtbar" somit verstehe ich die Aufregung nicht xD

    zudem @RodFromGermany das du ein Kommentar aus der Frage raus "Zitierst" was verwerflich ist, kann ja kein Grund sein Komplett keine Lösung an zu bieten denn wie @nafets3646 sagt:

    nafets3646 schrieb:

    @RodFromGermany
    Er will doch nur den Klick auf ein Item in einem ShellView erkennen? Inwiefern könnte man passenden Code für Schadsoftware missbrauchen?


    Wie @vbUser936 das nun im "Hintergrund" laufen lässt ist ja dann seine Sache und wird nicht als Haupt Antwort erwartet!





    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Ruerte“ ()

    Die einfachste Möglichkeit wäre natürlich, ein kleines Programm zu schreiben, welches beim Start einfach den NAS startet und dann das Explorer-Fenster anzeigt. Gäbs denn ein Problem, diese Methode zu benutzen?
    Du meinst beim Systemstart? Genau diese Lösung möchte ich eben nicht nutzen, da der NAS dann 90% der Zeit umsonst läuft, weil er nicht gebraucht wird. Genau dafür möchte ich ja das Programm schreiben, dass der NAS nur gestartet wird, wenn er auch wirklich gerade benötigt wird.
    Nein, ich meine, dass du ein Icon auf dem Desktop oder wo auch immer halt hast, welches dein Programm startet. Dieses startet dann deinen NAS und zeigt anschließend das Explorer-Fenster.