domain-jane
Goto Top

Verknüpfung in vbs erzeugen

Schönen guten Nabend!

Seit einer Weile versuche ich, mir mittels vbs eine Verknüpfung erzeugen zu lassen.
Dazu habe ich mir die Anleitungen von bastla durchgelesen.
Mein Problem ist allerdings, dass ich als Speicherort "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\shortcut.lnk" brauche
und als Ziel den Pfad, indem die vbs ausgeführt wird & \bum.exe (entspräche in Batch: %~dp0\bum.exe)

Bisher habe ich es so versucht:

Set oShell = CreateObject("Wscript.Shell")  
strUserProfile = oShell.ExpandEnvironmentStrings("%USERPROFILE%")  


Set fso = CreateObject("Scripting.FileSystemObject")  
ZielDingens = fso.GetParentFolderName(WScript.ScriptFullName)


Set objShell = CreateObject("WScript.Shell")  
sShortcut = (strUserProfile & "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\shortcut.lnk")  
set objLink = objShell.CreateShortcut(sShortcut)
objLink.TargetPath = "ZielDingens"  
objLink.Save

Die Verknüpfung wird mit dem richtigen Pfad erstellt, aber das Ziel stimmt nicht.
Er löst die Variable "ZielDingens" nicht auf und schreibt noch den Pfad zum Desktop davor. face-sad

Wäre echt super, wenn ihr ne spontane Idee hättet. face-smile

Content-ID: 261836

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

Ausgedruckt am: 08.11.2024 um 15:11 Uhr

Domain-Jane
Domain-Jane 31.01.2015 aktualisiert um 18:24:15 Uhr
Goto Top
Im Moment der Frageerstellung noch einmal kurz nachgedacht und Zzzzong - Fehler gefunden.
So geht's:

Set oShell = CreateObject("Wscript.Shell")  
 strUserProfile = oShell.ExpandEnvironmentStrings("%USERPROFILE%")  


 Set fso = CreateObject("Scripting.FileSystemObject")  
 ZielDingens = fso.GetParentFolderName(WScript.ScriptFullName)


 Set objShell = CreateObject("WScript.Shell")  
 sShortcut = (strUserProfile & "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\shortcut.lnk")  
 set objLink = objShell.CreateShortcut(sShortcut)
 objLink.TargetPath = (ZielDingens & "\bum.exe")  
 objLink.Save

(Ich habe nur Zeile 13 geändert)

Für Verbesserungsvorschläge bin ich immer offen.

Schönen Abend! face-smile
Dani
Dani 31.01.2015 um 18:39:46 Uhr
Goto Top
Guten Abend,
Für Verbesserungsvorschläge bin ich immer offen.
Warum nicht einfach mit Powershell? Ist in 3-4 Zeilen erledigt.


Gruß,
Dani
Domain-Jane
Domain-Jane 31.01.2015 um 19:06:59 Uhr
Goto Top
Hi Dani,
Naja, Powershell-Skripte brauchen doch immer Admin-Rechte oder nicht?
Das würde bei den Benutzern zu Problemen führen.
Dani
Dani 31.01.2015 um 19:29:59 Uhr
Goto Top
Braucht genau die selben Rechte wie dein VBS.
Wie kommst du auf solch eine Aussage?
116301
116301 31.01.2015 um 20:41:45 Uhr
Goto Top
Hallo Domain-Jane!

Für Verbesserungsvorschläge bin ich immer offen.
z.B.:
sShortcut = objShell.SpecialFolders("StartUp") & "\shortcut.lnk"  

Ansonsten reicht es auch, wenn das Shell-Object nur einmal zu erzeugt wird...

Grüße Dieter
Domain-Jane
Domain-Jane 31.01.2015 um 20:42:48 Uhr
Goto Top
Zitat von @Dani:

Braucht genau die selben Rechte wie dein VBS.
Wie kommst du auf solch eine Aussage?

Vermutlich durch Unwissenheit. ;)

Beim Ausführen von .ps1 Skripten kommt standardmäßig die Meldung, dass die Ausführung solcher
Skripte auf dem System deaktiviert ist.
Natürlich könnte man sich hier mit "Set-ExecutionPolicy Unrestricted" behelfen.
Allerdings setzt das wiederum Admin-Rechte voraus.
Domain-Jane
Domain-Jane 31.01.2015 um 21:01:46 Uhr
Goto Top
Zitat von @116301:

z.B.:
> sShortcut = objShell.SpecialFolders("StartUp") & "\shortcut.lnk"   


Ansonsten reicht es auch, wenn das Shell-Object nur einmal zu erzeugt wird...

Grüße Dieter

Hi Dieter,

puh, das ist natürlich sehr elegant und hätte mir ein paar schweißtreibende Sekündchen erspart!

Also hier noch einmal die aktuelle Version:
Wenn jetzt noch jemand kommt und dafür nen Einzeiler rauskloppt, werde ich aber ungemütlich! ;)

Set oShell = CreateObject("Wscript.Shell")  

Set fso = CreateObject("Scripting.FileSystemObject")  
ZielDingens = fso.GetParentFolderName(WScript.ScriptFullName)

sShortcut = objShell.SpecialFolders("StartUp") & "\shortcut.lnk"  
set objLink = oShell.CreateShortcut(sShortcut)
objLink.TargetPath = (ZielDingens & "\bum.exe")  
objLink.Save
Dani
Dani 31.01.2015 um 21:18:55 Uhr
Goto Top
Selbstverständlich, standardmäßig dürfen solche Skripte nicht ausgeführt werden.
Einmal aktiviert, kannst du loslegen.


Gruß,
Dani
116301
116301 01.02.2015 um 08:16:55 Uhr
Goto Top
Hallo Domain-Jane!

Kann man so lassen, nur noch in Codezeile 7 'objShell' durch 'oShell' ersetzt, dann sollte es auch funktionierenface-wink

Grüße Dieter