Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Verknüpfung in vbs erzeugen

Frage Entwicklung VB for Applications

Mitglied: Domain-Jane

Domain-Jane (Level 1) - Jetzt verbinden

31.01.2015, aktualisiert 18:25 Uhr, 767 Aufrufe, 9 Kommentare

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:

01.
 
02.
Set oShell = CreateObject("Wscript.Shell") 
03.
strUserProfile = oShell.ExpandEnvironmentStrings("%USERPROFILE%") 
04.
 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
ZielDingens = fso.GetParentFolderName(WScript.ScriptFullName) 
08.
 
09.
 
10.
Set objShell = CreateObject("WScript.Shell") 
11.
sShortcut = (strUserProfile & "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\shortcut.lnk") 
12.
set objLink = objShell.CreateShortcut(sShortcut) 
13.
objLink.TargetPath = "ZielDingens" 
14.
objLink.Save 
15.
 
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.

Wäre echt super, wenn ihr ne spontane Idee hättet.
Mitglied: Domain-Jane
31.01.2015, aktualisiert um 18:24 Uhr
Im Moment der Frageerstellung noch einmal kurz nachgedacht und Zzzzong - Fehler gefunden.
So geht's:

01.
 
02.
Set oShell = CreateObject("Wscript.Shell") 
03.
 strUserProfile = oShell.ExpandEnvironmentStrings("%USERPROFILE%") 
04.
 
05.
 
06.
 Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 ZielDingens = fso.GetParentFolderName(WScript.ScriptFullName) 
08.
 
09.
 
10.
 Set objShell = CreateObject("WScript.Shell") 
11.
 sShortcut = (strUserProfile & "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\shortcut.lnk") 
12.
 set objLink = objShell.CreateShortcut(sShortcut) 
13.
 objLink.TargetPath = (ZielDingens & "\bum.exe") 
14.
 objLink.Save 
15.
 
(Ich habe nur Zeile 13 geändert)

Für Verbesserungsvorschläge bin ich immer offen.

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


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

Für Verbesserungsvorschläge bin ich immer offen.
z.B.:
01.
sShortcut = objShell.SpecialFolders("StartUp") & "\shortcut.lnk"
Ansonsten reicht es auch, wenn das Shell-Object nur einmal zu erzeugt wird...

Grüße Dieter
Bitte warten ..
Mitglied: Domain-Jane
31.01.2015 um 20:42 Uhr
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.
Bitte warten ..
Mitglied: Domain-Jane
31.01.2015 um 21:01 Uhr
Zitat von 116301:

z.B.:
01.
> 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! ;)

01.
 
02.
Set oShell = CreateObject("Wscript.Shell") 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
ZielDingens = fso.GetParentFolderName(WScript.ScriptFullName) 
06.
 
07.
sShortcut = objShell.SpecialFolders("StartUp") & "\shortcut.lnk" 
08.
set objLink = oShell.CreateShortcut(sShortcut) 
09.
objLink.TargetPath = (ZielDingens & "\bum.exe") 
10.
objLink.Save 
11.
 
Bitte warten ..
Mitglied: Dani
31.01.2015 um 21:18 Uhr
Selbstverständlich, standardmäßig dürfen solche Skripte nicht ausgeführt werden.
Einmal aktiviert, kannst du loslegen.


Gruß,
Dani
Bitte warten ..
Mitglied: 116301
01.02.2015 um 08:16 Uhr
Hallo Domain-Jane!

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

Grüße Dieter
Bitte warten ..
Ähnliche Inhalte
Windows Systemdateien
gelöst Mit CMD Verknüpfung erstellen mit der Option "Ausführen in" (5)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

PHP
gelöst PHP Key - Value Dictionary in einer Schleife erzeugen (3)

Frage von facebraker zum Thema PHP ...

PHP
gelöst PHP Grafiken erzeugen und nachher löschen (6)

Frage von tsunami zum Thema PHP ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
iOS
16 iPads zentrall verwalten (18)

Frage von simonlohr zum Thema iOS ...

Viren und Trojaner
Ransomware .nm4 (15)

Frage von Zyklo92 zum Thema Viren und Trojaner ...

Windows 7
Freeware MSI Tool (13)

Frage von uridium69 zum Thema Windows 7 ...

Microsoft Office
gelöst VBA Excel Problem mit UserForm, ListBox und TextBox (12)

Frage von abuelito zum Thema Microsoft Office ...