Pfad in Verknüfung (.INK) anpassen
Hallo liebe Forenmitglieder,
ich hoffe, dass ich hier mit meiner Frage (VBS) richtig bin?
Folgende Situation:
Auf PC1 läuft eine Software, die von anderen PCs, über ein verbundenes Netzlaufwerk, über die Verknüpfung zur .exe aufgerufen wird.
Der Pfad in der Verknüpfung sieht z.B. so aus:
Ziel: "N:\Programmordner\Programm.exe User1" (User1 wird als Argument übergeben)
Ausführen in: "N:\Programmordner\"
Durch Windows 10 Updates wird jetzt dieser Pfad in einen UNC-Pfad umgewandelt ("\\PC1\Ordner1\Programmordner\Programm.exe User1"), womit jedoch die Software nicht mehr klarkommt und nicht mehr starten kann.
Mein Ziel ist es nun ein Script oder ähnliches zu haben, dass nachschaut, ob der Pfad in der Verknüpfung auf dem Desktop vom absoluten Pfad in einen relativen Pfad umgewandelt wurde und dies dann ggfls. wieder rückgängig macht.
Leider ist der Laufwerksbuchstabe nicht immer "N:" sondern kann auch "T:" sein. Kann man dies in die Prüfung auch noch einbauen, dass geprüft wird, welcher Laufwerksbuchstabe verbunden ist und dieser dann auch für den neuen (ursprünglichen) Pfad genommen wird?
Wäre jemand so nett, mir hier Hilfestellung zu leisten?
Dankeschön!
Käpsele
ich hoffe, dass ich hier mit meiner Frage (VBS) richtig bin?
Folgende Situation:
Auf PC1 läuft eine Software, die von anderen PCs, über ein verbundenes Netzlaufwerk, über die Verknüpfung zur .exe aufgerufen wird.
Der Pfad in der Verknüpfung sieht z.B. so aus:
Ziel: "N:\Programmordner\Programm.exe User1" (User1 wird als Argument übergeben)
Ausführen in: "N:\Programmordner\"
Durch Windows 10 Updates wird jetzt dieser Pfad in einen UNC-Pfad umgewandelt ("\\PC1\Ordner1\Programmordner\Programm.exe User1"), womit jedoch die Software nicht mehr klarkommt und nicht mehr starten kann.
Mein Ziel ist es nun ein Script oder ähnliches zu haben, dass nachschaut, ob der Pfad in der Verknüpfung auf dem Desktop vom absoluten Pfad in einen relativen Pfad umgewandelt wurde und dies dann ggfls. wieder rückgängig macht.
Leider ist der Laufwerksbuchstabe nicht immer "N:" sondern kann auch "T:" sein. Kann man dies in die Prüfung auch noch einbauen, dass geprüft wird, welcher Laufwerksbuchstabe verbunden ist und dieser dann auch für den neuen (ursprünglichen) Pfad genommen wird?
Wäre jemand so nett, mir hier Hilfestellung zu leisten?
Dankeschön!
Käpsele
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 369063
Url: https://administrator.de/forum/pfad-in-verknuefung-ink-anpassen-369063.html
Ausgedruckt am: 22.04.2025 um 03:04 Uhr
6 Kommentare
Neuester Kommentar

Ich würd's zwar per GPO schneller und leichter realisieren, aber wer's unbedingt umständlich mag bitte ...
Schnuffi
Tippfehler bereinigt ...
Set objShell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
' Pfad zum Shortcut
strPathShortcut = objShell.ExpandEnvironmentStrings("%userprofile%") & "\Desktop\myshortcut.lnk"
' mögliche Laufwerke
arrDrives = Array("N:\","T:\")
' Pfad zum Programm (ohne Laufwerksangabe)
strSubpath = "Programmordner\Programm.exe"
'Wenn Shortcut existiert
If fso.FileExists(strPathShortcut) Then
' erstelle Shortcutobjekt
Set lnk = objShell.CreateShortcut(strPathShortcut)
' Wenn Ziel kein UNC-Pfad ist beende Skript
If Left(lnk.TargetPath,2) <> "\\" Then WScript.Quit
' Prüfe ob Programm unter den Laufwerken zu finden ist
For Each drive In arrDrives
' Wenn Programmdatei existiert ersetze den Zielpfad der Verknüpfung
If fso.FileExists(drive & strSubpath) Then
lnk.TargetPath = drive & strSubpath
Exit For
End If
Next
' speichere den Link
lnk.Save
End If
Tippfehler bereinigt ...

Set objShell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
' mögliche Laufwerke
arrDrives = Array("N:\","T:\")
' Pfad zum Programm (ohne Laufwerksangabe)
strSubpath = "Programmordner\Programm.exe"
strDesktop = objShell.ExpandEnvironmentStrings("%userprofile%") & "\Desktop"
strPathShortcut = ""
set lnk = Nothing
'Suche Shortcut
For Each file In fso.GetFolder(strDesktop).Files
If LCase(fso.GetExtensionName(file.Name)) = "lnk" Then
' erstelle Shortcutobjekt
Set lnk = objShell.CreateShortcut(file.Path)
' Wenn Programmname in Targetpath
If InStr(1,LCase(lnk.TargetPath),LCase(strSubpath),1) > 0 Then
' Pfad zum Shortcut
strPathShortcut = file.Path
Exit For
End If
End If
Next
'Wenn Shortcut existiert
If strPathShortcut <> "" Then
' Wenn Ziel kein UNC-Pfad ist beende Skript
If Left(lnk.TargetPath,2) <> "\\" Then WScript.Quit
' Prüfe ob Programm unter den Laufwerken zu finden ist
For Each drive In arrDrives
' Wenn Programmdatei existiert ersetze den Zielpfad der Verknüpfung
If fso.FileExists(drive & strSubpath) Then
lnk.TargetPath = drive & strSubpath
Exit For
End If
Next
' speichere den Link
lnk.Save
End If

Bischt halt a Käpsele
.