In VB Username im Netzwerk wechseln

Hallo zusammen,

ich verzweifle fast an folgendem Problem und bin mal gespannt, ob Ihr eine Lösung wißt:

  • Wir haben ein kleines Homenetzwerk mit NAS-Festplatte zuhause, daran angeschlossen u.a. die Rechner meiner Kiner, alle WinXP.
  • Auf den Rechnern der Kinder wird versteckt im Autostart ein Programm gestartet, das auf dem NAS nachsieht, wie lange der Kleine schon gesurft hat, ob er überhaupt darf usw. Je nach Ergebnis wird Sohnemann nach Ablauf seiner erlaubten Zeit von Windows abgemeldet, auch falls es zu früh am Tag oder zu spät ist.
    -All das ist in VB6 geschrieben und läuft schon seit einiger Zeit gut mit nur einem einzigen Problem:

Wenn der Rechner hochfährt und das Prog gestartet wird, dann wird mit VB6 der nächste freie Laufwerkbuchstabe ermittelt und das NAS damit verbunden, die Daten gelesen und das LW wieder getrennt. Zum Verbinden ist Username und Paßwort (der Eltern) im Prog fest hinterlegt, denn die Kiddies dürfen das Laufwerk ja nicht selber verbinden können. Da deren Rechner nicht die schnellsten sind, kommt es hin und wieder vor, daß die Netzwerkverbindung (WLAN) beim Start des Prog oder aus anderen Gründen noch nicht steht, das NAS nicht gefunden wird und das Programm die Kinder daraufhin grundlos abmeldet, was den Papa als Urheber des „Virus“ nicht gerade beliebter macht.
Ich habe deshalb das Programm etwas umgeschrieben und wollte in regelmäßigen Abständen direkt über den Netzwerkpfad (\Server\Verzeichnis) nach den benötigten Dateien suchen. Dabei stellt sich mir das Problem, daß das Prog unter dem Usernamen der Kinder keinen Zugriff auf auf den Netzwerkpfad hat. Wenn ich das Prog mit „Runas“ unter meinem oder dem Admin-Konto starten lasse, dann habe ich Zugriff, weiß aber dann nicht mehr, welches Kind die Anfrage gestellt hat. Ich müßte also mit VB6 herausfinden, welche Benutzer gerade am Rechner angemeldet sind, obwohl das Prog selbst unter anderem Namen läuft. D.h. die API „GetUserName“ funktioniert hier nicht. Oder andere Möglichkeit: Ich müßte das Prog unter dem Nutzernamen der Kinder starten lassen, aber dann bräuchte ich einen DIR-Befehl, bei dem ich den Benutzernamen und Paßwort frei bestimmen kann.

Das größte Problem dabei ist, daß das Programm nicht mit der Hilfe des Users rechnen kann, sondern eher mit seiner Sabotage :smile:, also keine sichtbaren Batchfenster o.a. aufgerufen werden dürfen.

Hoffe, ich habe mich einigermaßen klar ausgedrückt. Ich erwarte auch nicht gleich Codebeispiele, sondern wäre schon froh, wenn mir jemand auf ein Konzept hinweisen könnte. Vielleicht geht ja alles viele einfacher, als ich denke.

Hallo Alf,

  • Auf den Rechnern der Kinder wird versteckt im Autostart ein
    Programm gestartet, das auf dem NAS nachsieht, wie lange der
    Kleine schon gesurft hat, ob er überhaupt darf usw. Je nach
    Ergebnis wird Sohnemann nach Ablauf seiner erlaubten Zeit von
    Windows abgemeldet, auch falls es zu früh am Tag oder zu spät
    ist.

das wird beim Booten seines PCs geprüft? Kam Sohnemann noch nicht auf die Idee halt die Kiste nicht auszumachen? :smile:

Da deren Rechner nicht die
schnellsten sind, kommt es hin und wieder vor, daß die
Netzwerkverbindung (WLAN) beim Start des Prog oder aus anderen
Gründen noch nicht steht, das NAS nicht gefunden wird und das
Programm die Kinder daraufhin grundlos abmeldet,

Wie das geht weiß ich nicht aber kann man nicht mit Ping oder sowas abprüfen ob eine Netzwerkverbindung aufgebaut ist?
Erst wenn das steht läuft das Programm weiter bzw. wenn sich nach x Minuten nix aufgebaut hat wird mit Fehlermeldung abgebrochen?

was den Papa
als Urheber des „Virus“ nicht gerade beliebter macht.

Bau doch in die Fehlermeldung „Dein Papa liebt dich“ mit ein *gg*

Dabei stellt sich mir das Problem, daß das Prog unter dem
Usernamen der Kinder keinen Zugriff auf auf den Netzwerkpfad
hat.

Du als Admin kannst ihnen da keine Zugriffsrechte geben?
Oder kopier doch die dateien/unterverzeichnisse des Verzeichnisses Netzwerk in ein Verzeichnis auf was die Kinner Zugriff haben.

Ich müßte das Prog unter dem
Nutzernamen der Kinder starten lassen, aber dann bräuchte ich
einen DIR-Befehl, bei dem ich den Benutzernamen und Paßwort
frei bestimmen kann.

Du willst mit DIR etwas „bestimmen“? SET oder so hätte ich eher kapiert.

Wie du unschwer aus meinenr Antwort herauslesen kannst habe/hatte ich noch nie ein Netztwerk :frowning:

Gruß
Reinhard

Hallo Alf!

Wenn der Rechner hochfährt und das Prog gestartet wird, dann
wird mit VB6 der nächste freie Laufwerkbuchstabe ermittelt und
das NAS damit verbunden, die Daten gelesen und das LW wieder
getrennt.

Ich nehme an, dass du das Netzlaufwerk mittels API verbindest. Wenn du die „WNetAddConnection2“-Funktion[1] verwendest, kannst du als Parameter auch einen Benutzernamen und ein Passwort mitgeben. Werden diese beiden Strings leer übergeben, werden die vom aktuell angemeldeten Benutzer verwendet.

Siehe dazu auch in der KB: http://support.microsoft.com/kb/173011/en-us

mfg
christoph

[1]http://msdn.microsoft.com/en-us/library/windows/desk…

Hallo Reinhard,

danke für deine Antwort…

das wird beim Booten seines PCs geprüft? Kam Sohnemann noch

nicht auf die Idee halt die Kiste nicht auszumachen? :smile:

Es wird beim Start des Programms und danach in regelmäßigen Abständen geprüft (alle paar Minuten und die verbliebene Restzeit wird dann ins Netzwerk zurückgeschrieben). Den Rechner nicht ausmachen würde ihm nichts nützen, denn er würde ja eh zur programmierten Schlafenszeit zwangsabgemeldet und kommt danach nicht mehr rein.

Wie das geht weiß ich nicht aber kann man nicht mit Ping oder
sowas abprüfen ob eine Netzwerkverbindung aufgebaut ist?
Erst wenn das steht läuft das Programm weiter bzw. wenn sich
nach x Minuten nix aufgebaut hat wird mit Fehlermeldung
abgebrochen?

Genau das habe ich gemacht. Aber erstens ist ein Programmabbruch für den Zweck des Programms tödlich und zweitens ist es genau das Problem, daß eine solche Fehlermeldung nervt, da sie mit einer Abmeldung des Users verbunden sein muß. Würde ich das nciht so machen, würden die Kiddis den Fehler ja provozieren.

was den Papa
als Urheber des „Virus“ nicht gerade beliebter macht.

Bau doch in die Fehlermeldung „Dein Papa liebt dich“ mit ein
*gg*

Das wissen die schon, aber die machen sich inzwischen über meine Programmierkünste lustig, weil mich mein eigenes programm schon ein paarmal selber abgmeldet hat, als ich unter ihrer Kennung drin war und vergessen hatte, den versteckten Task zu beenden. :wink:

Du als Admin kannst ihnen da keine Zugriffsrechte geben?
Oder kopier doch die dateien/unterverzeichnisse des
Verzeichnisses Netzwerk in ein Verzeichnis auf was die Kinner
Zugriff haben.

Wenn ich das tue, dann können sie ja auf die dateien zugreifen und sie zu ihren Gunsten verändern. Genau das sollen sie ja nicht können.
Mein Problem ist, daß die User etwas nicht dürfen, aber ein Programm, das bei der Anmeldung des Users gestartet wird, soll es können.

Ich müßte das Prog unter dem
Nutzernamen der Kinder starten lassen, aber dann bräuchte ich
einen DIR-Befehl, bei dem ich den Benutzernamen und Paßwort
frei bestimmen kann.

Du willst mit DIR etwas „bestimmen“? SET oder so hätte ich
eher kapiert.

Ich habe bisher das Netzlaufwerk verbunden, mit Dir die Dateien zusammengesucht und gelesen und dann das Netzlaufwerk wieder getrennt.Gibt es eine Möglichkeit, das Inhaltsverzeichnis eines Verzeichnsises mit SET zu lesen? Kann man da User/Passwort angeben?

Wie du unschwer aus meinenr Antwort herauslesen kannst
habe/hatte ich noch nie ein Netztwerk :frowning:

Du Glücklicher! Es ist alles relativ einfach, aber wenn du es mit einem Netzwerk zu tun hast, dann hast du echt die Krätze am Hals…

Danke nochmal

Alfred

Hallo Christoph,

danke für deine Antwort. Genauso habe ich es ja bisher gemacht. Ich möchte aber davon weg, das Netzlaufwerk fest mit einem Buchstaben zu verbinden, weil es damit Probleme gibt. Die Rechner (oder das Netzwerk?) sind zu langsam, damit alles störungsfrei läuft und darüberhinaus sieht der User das Laufwerk im Explorer immer kurz aufpoppen und wieder verschwinden. Meine Kiddies haben zwei unterschiedlich schnelle Rechner und das Programm verhält sich bei beiden unterschiedlich. Während es beim langsameren Rechner Probleme mit dem Dateisystem erzeugt (es bleibt z.B. im Explorer ein Laufwerksymbol mit einem roten Fragezeichen stehen, nachdem ich das Laufwerk getrennt habe) gibts beim schnelleren Rechner häufiger Probleme mit dem Funknetzwerk und daraufhin wird der User grundlos abgemeldet.

Deshalb dachte ich, ob es vielleicht eine Lösung gibt, wie ich direkt auf das Verzeichnis „//MeinServer/Mein Verzeichnis“ zugreifen kann und da auch noch die Berechtigung (User/Passwort) mitschicke.