rufusalex
Goto Top

Netzlaufwerk mit Dienst über Batchdatei verbinden

Ich habe einen Dienst auf Windows 2003 Server installiert der ein Batchfile aufruft.
In diesem File wird versucht ein Netzlaufwerk zu verbinden und der Explorer soll geöffnet werden.


Der Explorer wird auch geöffnet nur das Netzlaufwerk wird nicht verbunden.

Datei:
@echo off
echo. |time |find "current" >> log.txt

if exist X: net use X: /DELETE > NUL

net use X: \\Server\test


start C:\WINDOWS\explorer.exe
pause

Klicke ich manuell auf das Batchfile wird auch der net use Befehl ausgeführt.
Den Dienst führe ich als Domänenadmin aus.

Woran kann es liegen, dass net use nicht ausgeführt wird?

Content-Key: 92589

Url: https://administrator.de/contentid/92589

Printed on: April 27, 2024 at 04:04 o'clock

Member: AndreasHoster
AndreasHoster Jul 22, 2008 at 08:32:45 (UTC)
Goto Top
Deine Schlussfolgerung ist falsch.
Net use wird ausgeführt, mach einfach mal ein dir X: >> log.txt nach dem Net use rein, dann siehst Du das.
Das Problem ist, das mit start c:\windows\explorer.exe KEINE Instanz des Explorer-Programms gestartet wird, sondern NUR der vorhandene Explorer (der nämlich auch die Taskleiste und die Symbole auf dem Desktop anzeigt) ein neues Fenster anzeigt.
Da dieser Explorer aber in einem anderen Benutzerkontext abläuft (auch wenn es zweimal derselbe Benutzer ist startet man mit Diensten oder auch runas einen weiteren Benutzerkontext) und die Net use Verbindungen Benutzerkontextabhängig sind, sieht der Explorer die Net Use Verbindung nicht.
Tja, Multi-User Betriebssysteme können einfach interessante Nebeneffekte haben.
Member: Jochem
Jochem Jul 22, 2008 at 08:48:21 (UTC)
Goto Top
Moin,
da Du nicht schreibst, WAS Du eigentlich erreichen willst (denn das, was Du als Bedingung aufführst, wird ja offensichtlich gemacht: ein Netzlaufwerk verbunden und der Explorer geöffnet), mal ein paar Hinweise:

- Wenn Du ein bereits gemapptes Laufwerk löschen willst, um es danach wieder zu mappen, bringt ein "if Exist <Netzlaufwerk>:" rein gar nichts.
- Da Du die "Antwort" des "net use"-Befehls eh ins Nirwana verschwinden läßt, kannst Du ganausogut das Löschen der Netzwerkverbindung direkt aufrufen, ohne vorher das Vorhandensein per "if exist" zu prüfen.
- Wenn Du den Explorer mit dem gemappten Laufwerk aufrufen willst (?), dann häng doch das Laufwerk als Parameter hinter den Aufruf des Explorers.

Ansonsten bringen mehr Hinweise zum Problem sicherlich andere Erkenntnisse.

Gruß J face-smile chem
Mitglied: 60730
60730 Jul 22, 2008 at 09:00:57 (UTC)
Goto Top
Moinsen,

dein Script ist aber sehr suboptimal...

Zum einen @echo off hat in einer Batch wo "Test" beeinhaltet ist rein garnix zu suchen, außer du bist "Profi" - ergo zum Testen raus damit - dito mit den ganzen >nul
Die würde ich in der Alpha Beta Phase gegen >> log.txt tauschen, du willst schliesslich wissen, wo es genau klemmt.

Probier es mal "so" herum, obwohl es 1.001 Möglichkeiten gibt.

rem @echo off
net use x: >%temp%.tmp
findstr "\\Server\test" %temp%.tmp  
if %errorlevel%==1 net use X: /DELETE
If not exist x:\>nul net use X: \\Server\test
start %windir%\explorer.exe x:\
Member: miniversum
miniversum Jul 22, 2008 at 09:21:27 (UTC)
Goto Top
Nur so als Anmerkung:
%temp%.tmp
Ist als Dateiname nicht so geeignet, da %temp% schon als Umgebungsvariable auf das Temponäre Verzeichnis zeigt.
Die entstehende Datei würde also ungefär so aussehen:
C:\Users\miniversum\AppData\Local\Temp.tmp
Besser wäre da denke ich ein:
%temp%\temp.tmp
und dann brav am Ende ein
del %temp%\temp.tmp
wenn die Datei nimmer gebraucht wird ;)
Mitglied: 60730
60730 Jul 22, 2008 at 13:00:43 (UTC)
Goto Top
Nur so als Anmerkung:
dem Timo seine \ Taste hängt hin und wieder und der "dullie" kopiert teilweise grade geschriebene Zeilen ohne nachzusehen, ob ein Bock drin ist ......
Dem OP hilft es aber auf jeden Fall und das del. hab ich tatsächlich "vergessen"