
Ich habe auf meinem Windows-Rechner zwei zugeordnete Netzwerklaufwerke von einem NAS. Beide Laufwerke erfordern dieselbe Benutzername/Passwort-Konfiguration und ich habe mich dafür entschieden, Windows nicht anzuweisen, sich diese zu merken, denn ich möchte, dass die Mindestanforderung für den Zugriff auf meine Dateien die Eingabe mindestens eines Passworts sein sollte, oder?
Aus diesem Grund stellt Windows beim Anmelden keine Verbindung zu den Netzlaufwerken her und gibt den üblichen Fehler aus:
Es überrascht niemanden, dass Windows nicht weiß, was zu tun ist, wenn es das Kennwort für meine Netzwerkfreigabe nicht kennt.
So möchte ich diesen Vorgang automatisieren: Nach dem Hochfahren und Anmelden möchte ich ein Popup-Fenster zur Netzwerkanmeldung erhalten, wie das, das Sie erhalten, wenn Sie versuchen, auf ein Fenster zuzugreifen. Ich möchte mich erfolgreich anmelden und dann möchte ich, dass Windows versucht, die Netzwerklaufwerke zu verbinden.
Wie würde ich das erreichen?
(Mir ist durchaus bewusst, dass ich zur Automatisierung dieses Vorgangs denselben Benutzernamen und die gleichen Anmeldedaten auf meinem Windows-Rechner wie für die Netzwerkanmeldung verwenden könnte, aber das möchte ich auch nicht, auch wenn ich es anderen normalerweise empfehlen würde.)
Antwort1
Ich habe versucht, dies mit meinen grundlegenden Batch-Kenntnissen zu erreichen. Hier ist, was mir eingefallen ist.
Konfigurieren Sie Windows zunächst so, dass Ordnerfenster als separater Prozess gestartet werden (anstatt alle Ordner unter derselben Datei „explorer.exe“ zu behalten). Dadurch können Ordner über die Eingabeaufforderung bzw. Batch-Skripts geschlossen werden.
Schreiben Sie als Nächstes diese Batchdatei und platzieren Sie sie unter **C:\Benutzer\Benutzername\AppData\Roaming\Microsoft\Windows\Startmenü\Programme\Startup** (Warum ist dies nicht fett gedruckt?)
@echo off
start explorer "D:\"
:loop
timeout 0
(net use | findstr OK) > nul 2>&1
if errorlevel 1 goto loop
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVELABEL*" /IM explorer.exe
start /wait explorer "G:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE2LABEL*" /IM explorer.exe
start /wait explorer "F:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE3LABEL*" /IM explorer.exe
start /wait explorer "H:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE4LABEL*" /IM explorer.exe
stop
Ersetzen Sie einfach die Laufwerksbuchstaben durch die für Ihr System zutreffenden und NETWORKDRIVELABEL durch die Namen der entsprechenden Netzlaufwerke. Dies ist erforderlich, da der vollständige Name des Fenstertitels "NETWORKDRIVELABEL (\SHARENAME) (DRIVELETTER)" lautet, ich jedoch anstelle eines vollständigen Fenstertitels einfach ein Sternchen (*) verwende, um anzugeben, dass alle Explorer-Prozesse geschlossen werden sollen, deren Fenstertitel mit NETWORKDRIVELABEL beginnt.
Dabei wird versucht, die Netzwerkfreigabe "D:\" mit dem Windows-Datei-Explorer zu öffnen. Da es sich um eine Netzwerkfreigabe handelt, werden Sie aufgefordert, sich anzumelden. Anschließend wird eine Schleife ausgeführt, in der das Programm ausgeführt wirdNetzverwendung | findstr OK(sucht nach „OK“ in der Ausgabe von „net use“) und fährt nicht fort, bis es ein OK findet (Dieser Teil setzt voraus, dass Sie keine Netzlaufwerke initialisiert haben. Ich bin nicht sicher, wie ich findstr noch ausgefeilter gestalten kann; es ist nicht so gut wie grep von bash).
Sobald es erkennt, dass ein Netzlaufwerk ordnungsgemäß verbunden ist, versucht es, die anderen Netzlaufwerke zuzuordnen, indem es sie mit dem Explorer öffnet und dann schließt.
Ich musste am Ende der Batchdatei den Stoppbefehl verwenden, sonst wurde sie nicht normal beendet (ich musste auf Benutzereingabe warten).
Wenn Sie dies tun, aber das Befehlsfenster ausblenden möchten, lesen Sie hier weiter:Wie führe ich eine Batchdatei aus, ohne ein „Eingabefenster“ zu starten?