Startmenü um eigene Verknüpfungen erweitern

Sie wollen automatisch Verknüpfungen im Windows-Startmenü anlegen, etwa aus einer Installationsroutine für eine selbstprogrammierte Access-Datenbank heraus. Dafür eignet sich der Windows Scripting Host (WSH).

Das folgende Skript (CHIP-Code Praxis12) erzeugt nach einigen Benutzereingaben im Startmenü eine Verknüpfung auf eine Programmdatei:

Option Explicit

Dim objWSHShell
Dim objFileSystem
Dim objShortcut
Dim szProgramm
Dim szFolder
Dim szName
Dim szSpecialFolder
Dim status
szProgramm = InputBox(«Geben Sie das Ziel der Verknüpfung ein«,«Ziel der Verknüpfung«,««)
szName = InputBox(«Geben Sie den Namen der Verknüpfung ein«,«Name der Verknüpfung«,««)
szFolder = InputBox(«Geben Sie den Ordner im Startmenü ein«,«Ordner im Startmenü«,««)
Set objFileSystem = CreateObject(«Scripting.FileSystemObject«)
Set objWSHShell = WScript.CreateObject(«WScript.Shell«)
status=MsgBox(«Verknüpfung für alle Benutzer im Startmenü anlegen?«, vbYesNo + vbQuestion, »Startmenü für alle Benutzer?«)
If status=vbYes)Then
szSpecialFolder = objWSHShell.
SpecialFolders(«AllUsersStartMenu«) & »\« & szFolder
else
szSpecialFolder = objWSHShell.
SpecialFolders(«Startmenu«) & »\« & szFolder
End If
status=MsgBox(«Verknüpfung anlegen?«, vbYesNo + vbQuestion,. »Verknüpfung anlegen?«)
If (status=vbYes) Then
If Not objFileSystem.FolderExists(szSpecialFolder) Then
objFileSystem.CreateFolder(szSpecialFolder)
end if
Set objShortcut = objWSHShell.
CreateShortcut (szSpecialFolder & »\« & szName & ».lnk«)
objShortcut.TargetPath = szProgramm
objShortcut.Save
End If
»InputBox()« erfragt zuerst Namen, Ziel und Zielordner unterhalb von »Start | Alle Programme« für die neue Verknüpfung. Diese Daten schreibt es in die Variablen »szName«, »szProgramm« und »szFolder«. Das Objekt »objWSHShell« ist vom Typ »WScript.Shell« und enthält die Methode »SpecialFolders()«. Sie ermittelt den Systemordner »szSpecialFolder«, in dem Windows die Ordner und Verknüpfungen des Startmenüs speichert. Über die Parameter »Startmenu« beziehungsweise »AllUsersStart-Menu« bestimmt der Benutzer, ob er den Ordner nur für den angemeldeten User oder für alle Benutzer einrichtet.

Diesen Wert ergänzt das Skript um einen Backslash, gefolgt von »szFolder«. Danach prüft die Methode »FolderExists()« von »Scripting.FileSystemObject«, ob der Ordner bereits existiert und legt ihn, wenn nötig, mit der Methode »CreateFolder()« neu an. Zuletzt erzeugt »objWSHShell.CreateShortcut()« das Objekt »objShortcut« für die Verknüpfung. Als Parameter übergibt das Skript den Dateinamen der Verknüpfung. Wichtig ist dabei das Erweitern um die Endung .LNK. Dann wird an die Eigenschaft »TargetPath« dieses Objektes das Ziel der Verknüpfung »szProgramm« übergeben und die Verknüpfung mit der Methode »Save« erzeugt.