Verknüpfung auf Programm im Homeverzeichnis per Skript bei Login
Hi Leute,
habe mal "das" (bekannte) Skript von bastla aufgegriffen
Const strProgramtitel = "Anwendung"
Const strProgram = "%USERPROFILE\anwendung\anwendung.exe"
Const strWPath = "%USERPROFILE%\anwendung" 'Arbeitsverzeichnis
Dim objShortcut
Dim objShell
Set objShell = WScript.CreateObject("Wscript.Shell")
strLPfad = objShell.SpecialFolders("Desktop")
Set objShortcut = objShell.CreateShortcut(strLPfad & "\" & strProgramtitel & ".lnk")
objShortcut.TargetPath = strProgram
objShortcut.Description = strProgramtitel
objShortcut.Arguments = strArg
objShortcut.WorkingDirectory = strWPath
objShortcut.Save
...und soweit auch an meinen Bedarf angepasst.
Die Schwierigkeit besteht darin, dass ich mit dem Skript für jeden User eine Verknüpfung auf die Anwendung setzen muss, die jeweils im Profilverzeichnis liegt.
Fragt bitte nicht warum, ist ne alte 16 Bit Anwendung und ich bekomme die Temp Dateien nicht ausgelagert, also kopiere ich es in jedes Profilverzeichnis.
Allerdings erhält die Verknüpfung dann auch genau die o.a. Pfade mit den Variablen für "Ausführen in" und "Arbeitsverzeichnis".
Kann man das korrigieren sodass dort hinterher auch der richtige Pfad mit Benutzernamen steht?
Kann man darüberhinaus auch noch ein Icon mit angeben? Hatte das schon versucht zu basteln, bin nicht sehr fit mit VB
Besten Dank für Eure Tips und viele Grüße
Oliver
habe mal "das" (bekannte) Skript von bastla aufgegriffen
Const strProgramtitel = "Anwendung"
Const strProgram = "%USERPROFILE\anwendung\anwendung.exe"
Const strWPath = "%USERPROFILE%\anwendung" 'Arbeitsverzeichnis
Dim objShortcut
Dim objShell
Set objShell = WScript.CreateObject("Wscript.Shell")
strLPfad = objShell.SpecialFolders("Desktop")
Set objShortcut = objShell.CreateShortcut(strLPfad & "\" & strProgramtitel & ".lnk")
objShortcut.TargetPath = strProgram
objShortcut.Description = strProgramtitel
objShortcut.Arguments = strArg
objShortcut.WorkingDirectory = strWPath
objShortcut.Save
...und soweit auch an meinen Bedarf angepasst.
Die Schwierigkeit besteht darin, dass ich mit dem Skript für jeden User eine Verknüpfung auf die Anwendung setzen muss, die jeweils im Profilverzeichnis liegt.
Fragt bitte nicht warum, ist ne alte 16 Bit Anwendung und ich bekomme die Temp Dateien nicht ausgelagert, also kopiere ich es in jedes Profilverzeichnis.
Allerdings erhält die Verknüpfung dann auch genau die o.a. Pfade mit den Variablen für "Ausführen in" und "Arbeitsverzeichnis".
Kann man das korrigieren sodass dort hinterher auch der richtige Pfad mit Benutzernamen steht?
Kann man darüberhinaus auch noch ein Icon mit angeben? Hatte das schon versucht zu basteln, bin nicht sehr fit mit VB
Besten Dank für Eure Tips und viele Grüße
Oliver
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 83407
Url: https://administrator.de/contentid/83407
Ausgedruckt am: 29.03.2024 um 01:03 Uhr
12 Kommentare
Neuester Kommentar
Hallo rowdy146!
Eigentlich könntest Du Dir den Einsatz des Scripts sparen - erstelle einfach von Hand eine Verknüpfung für einen User, wobei Du die Pfade, wie bereits vorgesehen, mit "%USERPROFILE%" angibst und auch ein Icon dafür anlegst, und kopiere die entstehende Datei (Dateityp ist ".LNK") für jeden User.
Ansonsten gibt's eine ausführlichere Alternativvariante zu "dem" Script nochmals hier mit allen möglichen Einstellungen (also auch Icon-Zuordnung).
Grüße
bastla
Eigentlich könntest Du Dir den Einsatz des Scripts sparen - erstelle einfach von Hand eine Verknüpfung für einen User, wobei Du die Pfade, wie bereits vorgesehen, mit "%USERPROFILE%" angibst und auch ein Icon dafür anlegst, und kopiere die entstehende Datei (Dateityp ist ".LNK") für jeden User.
Ansonsten gibt's eine ausführlichere Alternativvariante zu "dem" Script nochmals hier mit allen möglichen Einstellungen (also auch Icon-Zuordnung).
Grüße
bastla
Hallo rowdy146!
Zunächst muss ich mich gleich einmal korrigieren: Bei einer 16Bit-Anwendung wird als Verknüpfung nicht eine ".LNK", sondern eine ".PIF"-Datei erstellt.
In den Eigenschaften dieser Verknüpfung kannst Du (zum Testen) im Register "Programm" den Haken bei "Nach Beenden schließen" entfernen - so siehst Du zumindest den Inhalt des CMD-Fensters.
Wie wurde das Programm eigentlich bisher gestartet, gab es schon jemals eine funktionierende Verknüpfung? Falls der Start über eine Batch-Datei im Programmordner vorzunehmen wäre, könnte man/frau auch dort ansetzen bzw auch einen eigenen Batch dafür verwenden.
Grüße
bastla
Zunächst muss ich mich gleich einmal korrigieren: Bei einer 16Bit-Anwendung wird als Verknüpfung nicht eine ".LNK", sondern eine ".PIF"-Datei erstellt.
In den Eigenschaften dieser Verknüpfung kannst Du (zum Testen) im Register "Programm" den Haken bei "Nach Beenden schließen" entfernen - so siehst Du zumindest den Inhalt des CMD-Fensters.
Wie wurde das Programm eigentlich bisher gestartet, gab es schon jemals eine funktionierende Verknüpfung? Falls der Start über eine Batch-Datei im Programmordner vorzunehmen wäre, könnte man/frau auch dort ansetzen bzw auch einen eigenen Batch dafür verwenden.
Grüße
bastla
Hallo rowdy146!
Versuch einmal folgendes: Füge in der Batchdatei nach dem "@ECHO OFF" am Anfang folgende Zeile ein:
Um ev Fehlermeldungen nachvollziehen zu können, wäre noch das "CLS" in der vorletzten Zeile durch "PAUSE" zu ersetzen - dadurch wird das CMD-Fenster erst nach Drücken einer Taste geschlossen (kannst Du natürlich später wieder entfernen).
Grüße
bastla
ist das so mit den Code-Tags richtig?
Fast - der "/" am Ende müsste unmittelbar vor "code" platziert werden.Versuch einmal folgendes: Füge in der Batchdatei nach dem "@ECHO OFF" am Anfang folgende Zeile ein:
CD /D "%~dp0"
Um ev Fehlermeldungen nachvollziehen zu können, wäre noch das "CLS" in der vorletzten Zeile durch "PAUSE" zu ersetzen - dadurch wird das CMD-Fenster erst nach Drücken einer Taste geschlossen (kannst Du natürlich später wieder entfernen).
Grüße
bastla
Hallo rowdy146!
Ein
könnte Dir schon einmal eine erste Antwort geben ...
Mit der angegebenen Zeile stelle ich sicher, dass beim Starten der Batchdatei in das Verzeichnis, in dem sich die Batchdatei selbst befindet, gewechselt wird, da alle Programmaufrufe ohne Pfade angegeben sind und sich daher auf das gleiche Verzeichnis beziehen müssen.
Die Details zum "%~dp0" findest Du übrigens am Ende der Hilfe zu "for", wobei noch anzumerken wäre, dass "%0" für die Batchdatei selbst steht.
Grüße
bastla
Ein
cd /?
Mit der angegebenen Zeile stelle ich sicher, dass beim Starten der Batchdatei in das Verzeichnis, in dem sich die Batchdatei selbst befindet, gewechselt wird, da alle Programmaufrufe ohne Pfade angegeben sind und sich daher auf das gleiche Verzeichnis beziehen müssen.
Die Details zum "%~dp0" findest Du übrigens am Ende der Hilfe zu "for", wobei noch anzumerken wäre, dass "%0" für die Batchdatei selbst steht.
Grüße
bastla
Hallo rowdy146!
Anyhow: Mit VBS kannst Du den Pfad zum Benutzerprofil bzw dann den Programmpfad (zur Batchdatei) so bekommen:
Grüße
bastla
... das andere gelinkte Skript von dir ...
Nur der Ordnung halber: Weder das eine noch das andere ist von mir (das zweite habe ich noch nicht einmal gepostet) - aber schön, dass Du mir's zutrauen würdest ... Funkt auch alles toll, aber warum ersetzt es beim Anlegen der Verknüpfung die Variable nicht mit dem dahinterliegenden Wert?
Weil es so gewünscht war (und flexibler / sinnvoller ist).Schätze wenn das der Fall ist, läuft die Sache auch durch.
Da habe ich so meine leisen Zweifel, da die Variable im Pfad eigentlich keine Rolle spielen dürfte - wenn die Batchdatei gestartet wird, wechselt diese ja ohnehin in das konkrete Verzeichnis. Schon eher ein Thema wäre es, tatsächlich nur kurze Namen im Pfad zu verwenden.Anyhow: Mit VBS kannst Du den Pfad zum Benutzerprofil bzw dann den Programmpfad (zur Batchdatei) so bekommen:
strUserProfilePath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%")
strProgram = strUserProfilePath & "\Anwendung\Start.bat"
Grüße
bastla