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-Key: 261836

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

Printed on: April 19, 2024 at 02:04 o'clock

Member: Domain-Jane
Domain-Jane Jan 31, 2015 updated at 17:24:15 (UTC)
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
Member: Dani
Dani Jan 31, 2015 at 17:39:46 (UTC)
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
Member: Domain-Jane
Domain-Jane Jan 31, 2015 at 18:06:59 (UTC)
Goto Top
Hi Dani,
Naja, Powershell-Skripte brauchen doch immer Admin-Rechte oder nicht?
Das würde bei den Benutzern zu Problemen führen.
Member: Dani
Dani Jan 31, 2015 at 18:29:59 (UTC)
Goto Top
Braucht genau die selben Rechte wie dein VBS.
Wie kommst du auf solch eine Aussage?
Mitglied: 116301
116301 Jan 31, 2015 at 19:41:45 (UTC)
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
Member: Domain-Jane
Domain-Jane Jan 31, 2015 at 19:42:48 (UTC)
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.
Member: Domain-Jane
Domain-Jane Jan 31, 2015 at 20:01:46 (UTC)
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
Member: Dani
Dani Jan 31, 2015 at 20:18:55 (UTC)
Goto Top
Selbstverständlich, standardmäßig dürfen solche Skripte nicht ausgeführt werden.
Einmal aktiviert, kannst du loslegen.


Gruß,
Dani
Mitglied: 116301
116301 Feb 01, 2015 at 07:16:55 (UTC)
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