Mir wird es nie einleuchten, warum Softwarehersteller sich so an der Nutzung von Netzlaufwerken festklammern, grade auch wenn die Ausführung von Programmen von diesen selbst von Microsoft selber nicht empfohlen wird, aber egal.
Wenn das ganze dann auch noch auf Client-Rechnern in einer Außenstelle zum Einsatz kommt, wo das Verzeichnis sogar lokal auf dem Rechner liegt und auf diesem selber als Netzlaufwerk eingebunden wird, und der zweite Client-Rechner zwecks Datensynchronität das Netzlaufwek vom ersten Client-Rechner einbinden muss, dann kann es zu Problemen kommen, die ich in diesem Artikel erläutere.
Ob das bei Windows 10 noch so ist, habe ich nicht getestet, aber bei Windows 7 und XP kann aus irgendeinem Grund, vermutlich weil das Betriebssystem versucht mitzudenken, wenn die Freigabe nicht gefunden wird, der Pfad in der Verknüpfung zu einem Programm einfach automatisch verändert werden.
In dem Fall wird der Pfad einfach auf Laufwerk C angepasst, wenn dort dergleiche Ordner bzw. die gleiche .exe gefunden wird, oder das Netzlaufwerk wird unter dem Buchstaben Z neu verbunden. Da auf dem zweiten Client-Rechner eine Kopie für den Notfall abgelegt ist, führt dies bei Netzwerkproblemen oder der falschen Reihenfolge beim Einschalten, dann unweigerlich zu solchen unschönen Problemen. Aufgrund der Gestaltung der Software muss diese natürlich immer vom gleichen Laufwerksbuchstaben aus gestartet werden, ansonsten crasht die Anwendung.
Um diesen Problemen und auch einem weiteren programmspezifischen Problem, bei dem die entsprechende Anwendung nach dem Schließen im Hintergrund für den Benutzer unsichtbar aktiv bleibt und die Anwendung sich nicht wieder neu starten lässt, vorzubeugen, habe ich eine Batch-Datei geschrieben.
Im Grunde macht diese nichts anderes, als zu prüfen, ob die entsprechende .exe noch aktiv ist und diese in dem Fall abzuschießen. Danach wird geprüft, ob das Netzlaufwerk verbunden ist bzw. der Pfad existiert. Wenn dies der Fall ist, wird dann in das Arbeitsverzeichnis, also das Netzlaufwerk, gewechselt und dort die entsprechende .exe mit dem Startbefehl aufgerufen. Dadurch schließt sich die Kommandozeile beim Start des Programms und bleibt nicht geöffnet, weil die .exe dann nicht im Kontext der Kommandozeile ausgeführt wird:
1 2 3 4 5 6 7 8 9 10 11 12 |
@echo off taskkill /IM test.exe /T /F if exist P: ( echo Netzlaufwerk verbunden P: start test.exe ) else ( echo Netzlaufwerk nicht verbunden ) |
Nun gibt es noch den Fall, dass auf dem zweiten Client-Rechner ein anderes Programm vom Netzlaufwerk ausgeführt werden muss, als auf dem ersten. Da bei der eingesetzten Software Umgebungsvariablen genutzt werden, um die Stationen zu unterscheiden, bot es sich an diese einfach für eine Unterscheidung beim Start der Anwendung auszuwerten, z.B. so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
taskkill /IM test.exe /T /F if exist P: ( echo Netzlaufwerk verbunden if %ENV_VAR%==1 ( P: start test.exe ) else ( P: start test2.exe ) ) else ( echo Netzlaufwerk nicht verbunden ) |