VB Netzlaufwerk verbinden und User begrüßen
Hallo ihr Lieben,
ich habe folgendes Problem.
Ich habe die Aufgabe bekommen, ein Anmeldescript unter VB zu erstellen, in dem der jeweils angemeldete User begrüßt wird und gleichzeitig ein Netzlaufwerk verbunden wird. Das Script soll auf einem XP Client ausgeführt werden. Das Netzlaufwerk befindet sich aúf einem virtuellen Windows 2003 Server. Da ich leider absolut keine Ahnung von VB habe, und Google auch nichts wirklich passendes für mein Problem bietet, hoffe ich auf eure Hilfe
Danke und liebe Grüße,
h4zZ4rd
ich habe folgendes Problem.
Ich habe die Aufgabe bekommen, ein Anmeldescript unter VB zu erstellen, in dem der jeweils angemeldete User begrüßt wird und gleichzeitig ein Netzlaufwerk verbunden wird. Das Script soll auf einem XP Client ausgeführt werden. Das Netzlaufwerk befindet sich aúf einem virtuellen Windows 2003 Server. Da ich leider absolut keine Ahnung von VB habe, und Google auch nichts wirklich passendes für mein Problem bietet, hoffe ich auf eure Hilfe
Danke und liebe Grüße,
h4zZ4rd
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 64857
Url: https://administrator.de/contentid/64857
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
Versuchs mal damit
wobei k: hier den Laufwerksbuchstaben darstellt.
Gruß,
Sylvio
Versuchs mal damit
On Error Resume Next
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer in colItems
UN = objComputer.UserName
Next
Msgbox "Hello " & UN , vbOKOnly, "Welcome"
Set objshell = Wscript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
objshell.Run("net use k: /d"),0 'delete exsisting map
objshell.Run("net use k: \\servername\share"),0
Gruß,
Sylvio
Hallo h4zz4rd und willkommen im Forum!
Als Alternative zu Sylvio's Vorschlag könntest Du es auch ohne die Verwendung der CMD-Shell probieren:
Das "On Error Resume Next"-Statement brauchst Du vor allem für den Fall, dass K: noch nicht mit einem Netzlaufwerk verbunden ist (und daher auch nicht getrennt werden kann).
Falls Du das sauberer lösen wolltest, könntest Du die verbundenen Laufwerke abfragen:
Grüße
bastla
Als Alternative zu Sylvio's Vorschlag könntest Du es auch ohne die Verwendung der CMD-Shell probieren:
On Error Resume Next
Set WshNetwork = CreateObject("WScript.Network")
MsgBox "Hello " & WshNetwork.UserName & " !", vbOKOnly, "Welcome"
WshNetwork.RemoveNetworkDrive "K:"
WshNetwork.MapNetworkDrive "K:", "\\servername\share"
Falls Du das sauberer lösen wolltest, könntest Du die verbundenen Laufwerke abfragen:
Set oDrives = WshNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
If oDrives.Item(i) = "K:" Then WshNetwork.RemoveNetworkDrive "K:"
Next
Grüße
bastla
Hi bastla!!!
was man so nebenbei so alles Schönes sieht hier... ;)
Danke sehr für deinen Beitrag! *als-kleines-licht-den-kopf-senk* *fg*
Bei uns ist es teilweise nämlich so, dass die Anmeldeskripte recht lange dauern. (.bat Scripte)
Es wurde immer so gemacht, dass mit net use * /delete /yes alle Laufwerke getrennt worden sind und dann wieder verbunden worden sind.
So wie Du es hier löst, ist es wahrscheinlich eine ganze Ecke schneller!!! (oooder?)
Interessehalber: Kennst Du noch eine Möglichkeit per Batch-Datei herauszufinden, ob ein Laufwerk K: (zum Beispiel) mit einer Ressource (nehmen wir mal "set verbindmich=\\server\meineressource$") noch verbunden ist? (Durch eine Abfrage per REG oder irgendetwas anderem?)
Auf Grundlage dieser könnte man die Anmeldeskripte schon genug optimieren ohne immer wieder alles erneut zu verbinden...
Schon mal danke im Voraus!
Lieben Gruß
Markus
was man so nebenbei so alles Schönes sieht hier... ;)
Danke sehr für deinen Beitrag! *als-kleines-licht-den-kopf-senk* *fg*
Bei uns ist es teilweise nämlich so, dass die Anmeldeskripte recht lange dauern. (.bat Scripte)
Es wurde immer so gemacht, dass mit net use * /delete /yes alle Laufwerke getrennt worden sind und dann wieder verbunden worden sind.
So wie Du es hier löst, ist es wahrscheinlich eine ganze Ecke schneller!!! (oooder?)
Interessehalber: Kennst Du noch eine Möglichkeit per Batch-Datei herauszufinden, ob ein Laufwerk K: (zum Beispiel) mit einer Ressource (nehmen wir mal "set verbindmich=\\server\meineressource$") noch verbunden ist? (Durch eine Abfrage per REG oder irgendetwas anderem?)
Auf Grundlage dieser könnte man die Anmeldeskripte schon genug optimieren ohne immer wieder alles erneut zu verbinden...
Schon mal danke im Voraus!
Lieben Gruß
Markus
Hallo problemsolver!
Freut mich, wenn Du Interessantes gefunden hast ...
Eine Abfrage zu diesem Zweck in Batch könnte (für mehrere Netzlaufwerke) etwa so aussehen:
Wenn bereits richtig verbunden, lässt der Batch die Verbindung bestehen, wenn verbunden, allerdings nicht mit der richtigen Freigabe, wird getrennt und neu verbunden und wenn noch nicht verbunden wird natürlich gleichfalls "net use ..." ausgeführt.
Aber ob das etwas bringt ...
Grüße
bastla
Freut mich, wenn Du Interessantes gefunden hast ...
So wie Du es hier löst, ist es wahrscheinlich eine ganze Ecke schneller!!! (oooder?)
Das Script oben ist eigentlich eine Entsprechung zu Eurer Vorgangsweise (trennen / neu verbinden), also sollte es in der Form nicht wirklich schneller sein. Du könntest das Ganze allerdings tatsächlich umkehren und die Abfrage dazu benutzen, nur dann zu verbinden, wenn eben keine Laufwerksverbindung (zur richtigen Freigabe) besteht.Eine Abfrage zu diesem Zweck in Batch könnte (für mehrere Netzlaufwerke) etwa so aussehen:
@echo off & setlocal
for %%i in ("K:\\Server\Share4K" "L:\\Server\Share4L" "X:\\Server\Share4X") do for /f "tokens=1* delims=:" %%d in ('echo %%~i') do call :Connect %%d: "%%e"
goto :eof
:Connect
set conn=
for /f "tokens=3" %%i in ('net use^|findstr /i "%1"') do set "conn=%%i"
if /i "%conn%"==%2 goto :eof
if defined conn net use %1 /d>nul
net use %1 %2>nul
goto :eof
Aber ob das etwas bringt ...
Grüße
bastla
Hallo h4zz4rd!
Mit urlaubsbedingter Verspätung zum WshNetwork-Objekt den entsprechenden Hilfe-Text:
Bietet Zugriff auf die freigegebenen Ressourcen des Netzwerkes, mit dem der Computer verbunden ist.
Erstellen Sie ein WshNetwork-Objekt, wenn eine Verbindung mit Netzwerkfreigaben und Netzwerkdruckern hergestellt oder getrennt werden soll, wenn Netzwerkfreigaben zugeordnet oder entfernt werden sollen oder auf Informationen zu einem Benutzer des Netzwerkes zugegriffen werden soll.
Eigenschaften
ComputerName-Eigenschaft | UserDomain-Eigenschaft | UserName-Eigenschaft
Methoden
AddWindowsPrinterConnection-Methode | AddPrinterConnection-Methode | EnumNetworkDrives-Methode | EnumPrinterConnections-Methode | MapNetworkDrive-Methode | RemoveNetworkDrive-Methode | RemovePrinterConnection-Methode | SetDefaultPrinter-Methode
Kommentare können nach einem Apostroph eingefügt werden, also etwa
Grüße
bastla
Mit urlaubsbedingter Verspätung zum WshNetwork-Objekt den entsprechenden Hilfe-Text:
Bietet Zugriff auf die freigegebenen Ressourcen des Netzwerkes, mit dem der Computer verbunden ist.
Erstellen Sie ein WshNetwork-Objekt, wenn eine Verbindung mit Netzwerkfreigaben und Netzwerkdruckern hergestellt oder getrennt werden soll, wenn Netzwerkfreigaben zugeordnet oder entfernt werden sollen oder auf Informationen zu einem Benutzer des Netzwerkes zugegriffen werden soll.
Eigenschaften
ComputerName-Eigenschaft | UserDomain-Eigenschaft | UserName-Eigenschaft
Methoden
AddWindowsPrinterConnection-Methode | AddPrinterConnection-Methode | EnumNetworkDrives-Methode | EnumPrinterConnections-Methode | MapNetworkDrive-Methode | RemoveNetworkDrive-Methode | RemovePrinterConnection-Methode | SetDefaultPrinter-Methode
Kommentare können nach einem Apostroph eingefügt werden, also etwa
WshNetwork.RemoveNetworkDrive "K:" 'Netzlaufwerk K: trennen
Grüße
bastla