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

Programme mit Ziel auf Netzlaufwerk an Startleiste und Taskbar pinnen

Anleitung Microsoft Windows 7

Mitglied: gilldex

gilldex (Level 1) - Jetzt verbinden

12.07.2013 um 09:01 Uhr, 4357 Aufrufe, 2 Kommentare, 3 Danke

Wir setzen bei uns auf Windows 7 in Verbindung mit Windows Server 2008 R2 Servern.

Bei der Migration zu Windows 7 hatten wir das Problem, dass wir auf keinem komfortablem Weg Programme welche auf einem Netzlaufwerk liegen den Usern an die Taskbar oder ans Startmenü zu heften. Es gibt dafür bekanntlich den manuellen Workaround, dass man zuerst ein lokales Programm pinnt und danach das Ziel anpasst. Da manuell aber keine Option ist habe ich mich daran gemacht das ganz zu automatisieren.
Im Internet stösst man auf Scripte und Tools welche helfen Programme zu pinnen. Ich habe aber keines gefunden welches meinen Ansprüchen genügt und somit machte ich mich selbst ans Werk. Als Grundlage diente mir ein Script aus dem Microsoft Technet Forum welches ich um einige Funktionen ergänzt und angepasst habe. Der Umweg sieht auch so aus als ob er bewusst noch verkompliziert wurde, allen anderen probierten Wege funktionierten allerdings nicht korrekt auf sehr langsamen Rechnern oder umgekehrt auf sehr schnellen PC's. Ich bin leider nicht wirklich ein VB Script Profi, darum bin ich froh wenn ich auch auf Verbersserungsvorschläge hingewiesen werde.

Leider gibt es keine Universallösung für alle Sprachen mittels der gescripteten Lösung. Microsoft bietet keinen besseren Weg um ein Programm zu pinnen als auf dem Weg über den Namen des Kontextmenü's, und schon gar nicht eines auf einem Netzlaufwerk. Daher kommt auch die Sprachabhängigkeit. Man kann sich zwar wia Sysprep 3 zusätzliche Items an die Taskbar pinnen. Man kann aber z.B. keine dort bereits vorhandenen Elemente entfernen. Das pinnen von Programmen funktioniert im Moment nur mit folgenden Sprachen des OS, können aber beliebig erweitert werden:

• Englisch – USA
• Deutsch – Deutschland
• Deutsch – Schweiz
• Italienisch – Italien
• Italienisch – Schweiz
• Französisch – Frankreich
• Französisch – Schweiz

Desweiteren löscht das Script alle vom Default User bekannten Standardeinträge aus den kürzlich genutzten Programmen aus der Liste, sodass jeder User sauber starten kann. Für das gibt es zwar eine GPO, aber doppelt hält besser. ;)
Bei einigen Windows 7 Versionen sind bei den kürzlich genutzten Programmen andere Einträge drin als bei anderen. Man kann diese Beliebig im Array „arrDeleteApps“ ergänzen, indem man die EXE zur Verknüpfung angibt.

Das Script ist ebenfalls in der Lage auf Installationsbedingungen einzugehen. Man kann prüfen ob eine Software installiert ist und anhand des Ergebnisses wird dann die Verknüpfung erstellt oder nicht. Geprüft wird in der Registry im Uninstall String auf den Wert „DisplayName“, dabei spielt es keine Rolle ob es sich um ein 64-Bit oder 32-Bit Betriebssystem handelt, das Script unterstützt beides. Dazu benutzt man die Funktion "IsProgramInstalled" vor der eigentlichen pin/unpin Aktion. Die Funktion gibt einen True oder Fales Wert zurück.

Das Script verfügt auch über die Möglichkeit sich selbst zu löschen, mittels dieser Funktion kann man das Script zum Beispiel im Default User Ordner einbetten und einen Registry Key setzen in HKCU\software\microsoft\windows\currentversion\runonce. Dann wird das Script für jeden neuen User ausgeführt und anschliessend auch gleich gelöscht.


Beispiel Syntax um Items zu pinnen oder zu lösen:

Pinnen einer lokalen Verknüpfung in die Taskleiste
DoVerbPinTask,strAllUsersProgramsPath & "Windows Media Player.lnk",FALSE," "
12345

Pinnen einer lokalen EXE ans Startmenü
DoVerbPinStart,strProgramsPath & "Windows Defender\MSASCui.exe",FALSE," "
12345

Pinnen einer Netzwerk EXE ans Startmenü
DoVerbPinStart,"P:\Test\test.exe",FALSE,"Steuerprogramm"
12345

Unpinnen einer Verknüpfung
DoVerbUnpinTask,“C:\windows\system32\calc.exe.exe”TRUE," "
12345

Erklärung:

1. DoVerb leiten den Pin/Unpin Vorgang ein
2. UnpinTask legt fest dass man etwas von der Taskleiste lösen will.
Alle möglichen Aktionen dafür sind:
• PinStart: Pinnt etwas ans Startmenü
• UnpinStart: Löst etwas vom Startmenü
• PinTask: Pinnt etwas an die Taskleiste
• UnpinTask: Löst etwas von der Taskleiste

3. Pfad zu Exe oder der Verknüpfung welche gepinnt werden soll. (Es ist beides möglich.)

4. Deklariert ob die Zieldatei auf einem Netzlaufwerk liegt oder nicht.
Alle möglichen Aktionen dafür sind:
• TRUE: Die Zieldatei liegt auf einem Netzlaufwerk
• FALSE: Die Zieldatei liegt NICHT auf einem Netzlaufwerk

5. Falls die Zieldatei auf dem Netzwerk liegt sollte hier der gewünschte Name eingegeben werden welcher später die Verknüpfung trägt. Bei lokalen Dateien braucht es den nicht, dort holt er sich den automatisch aus der Exe oder Verknüpfung.

ACHTUNG: Alle Felder sind Pflichtfelder!

Ich hoffe das hilft vielleicht jemandem anders ausser mir noch weiter. Für Verbesserungsvorschläge oder gar andere Lösungen ohne Script für dieses Problem bin ich euch dankbar.


Hier der Code:

01.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
02.
'           KONSTANTEN 
03.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
04.
Const HKEY_CLASSES_ROOT     = &H80000000 
05.
Const HKEY_CURRENT_USER     = &H80000001 
06.
Const HKEY_LOCAL_MACHINE     = &H80000002 
07.
Const HKEY_USERS             = &H80000003 
08.
Const HKEY_CURRENT_CONFIG     = &H80000005 
09.
 
10.
Const CSIDL_COMMON_PROGRAMS    = &H17 
11.
Const CSIDL_PROGRAMS        = &H2 
12.
Const CSIDL_SYSTEM		= &H25 ' Windows\System32 
13.
Const CSIDL_APPDATA		 = &H1A  ' Anwendungsdaten 
14.
Const CSIDL_PROGRAM_FILES = &H26 
15.
Const CSIDL_PROGRAM_FILESX86 = &H2A 
16.
 
17.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
18.
'          OBJEKTE 
19.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
20.
Set objRegistry            = GetObject("winmgmts:\\.\root\default:StdRegProv") 
21.
Set objFSO                = CreateObject("Scripting.FileSystemObject") 
22.
Set objApplication        = CreateObject("Shell.Application") 
23.
Set objWMIService 			= GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
24.
Set objAllUsersPrograms    = objApplication.NameSpace(CSIDL_COMMON_PROGRAMS) 
25.
Set objUserPrograms        = objApplication.NameSpace(CSIDL_PROGRAMS) 
26.
Set objUserAppdata			= objApplication.NameSpace(CSIDL_APPDATA) 
27.
Set objSystem32				= objApplication.NameSpace(CSIDL_SYSTEM) 
28.
Set objShell 				= CreateObject( "WScript.Shell" ) 
29.
Set objPrograms				= objApplication.NameSpace(CSIDL_PROGRAM_FILES) 
30.
Set objProgramsx86			= objApplication.NameSpace(CSIDL_PROGRAM_FILESX86) 
31.
Set TempDir 				= objFSO.GetSpecialFolder(2) 
32.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
33.
'          VARIABELN 
34.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
35.
Dim arrSubValues, arrDeleteApps, strAllUsersProgramsPath 
36.
 
37.
strAllUsersProgramsPath    = objAllUsersPrograms.Self.Path & "\" 
38.
strUserProgramsPath        = objUserPrograms.Self.Path & "\" 
39.
strUserAppdataTaskbarPath    = objUserAppdata.Self.Path & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\" 
40.
strSystem32Path        = objSystem32.Self.Path & "\" 
41.
strTempDir			= TempDir & "\" 
42.
strProgramsPath		= objPrograms.Self.Path  & "\" 
43.
strProgramsx86Path		= objProgramsx86.Self.Path  & "\" 
44.
Counter 			= 0 
45.
ShortcutCount		= 1 
46.
'MS Standardeinträge Definition 
47.
arrDeleteApps = Array("displayswitch.lnk", "remote desktop connection.lnk", "sticky notes.lnk", "snipping tool.lnk", "calculator.lnk", "paint.lnk", "xps viewer.lnk", "windows fax and scan.lnk", "Welcome Center.lnk", "Pen Training.lnk", "Media Center.lnk", "Windows Ultimate Extras.lnk", "Windows Photo Gallery.lnk", "Windows Collaboration.lnk", "Windows Photo Gallery.lnk", "Windows Live.lnk", "backup.lnk", "Windows Media Player.lnk", "magnify.lnk") 
48.
'Die hier angegebenen Exe Dateien liegen alle im System32 Ordner und werden für den Zwischenschritt gebraucht um Netzwerkprogramme zu pinnen 
49.
arrLocalExe = Array("charmap.exe", "cmd.exe", "cscript.exe", "defrag.exe", "fontview.exe", "cacls.exe", "cscript.exe", "wscript.exe") 
50.
'Speichert die Speicherort und Namen der Shortcuts zwischen welche als Netfile gekennzeichnet sind 
51.
arrShortcuts = Array() 
52.
'Speichert den Pfad der Exe Dateien zwischen welche als Netfile gekennzeichnet sind 
53.
arrNetfilePath = Array() 
54.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
55.
'SUPPORT FÜR VERSCHIEDENE SPRACHEN 
56.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
57.
Select Case GetLocale() 
58.
'Englisch - USA 
59.
        Case 1033 
60.
			PinStart = "Pin to Start Menu" 
61.
			UnpinStart = "Unpin from Start menu" 
62.
			PinTask = "Pin to Taskbar" 
63.
			UnpinTask = "Unpin from Taskbar" 
64.
'Deutsch - Deutschland 
65.
		Case 1031 
66.
			PinStart = "An Startmenü anheften" 
67.
			UnpinStart = "Vom Startmenü lösen" 
68.
			PinTask = "An Taskleiste anheften" 
69.
			UnpinTask = "Von Taskleiste lösen" 
70.
'Deutsch - Schweiz 
71.
		Case 2055 
72.
			PinStart = "An Startmenü anheften" 
73.
			UnpinStart = "Vom Startmenü lösen" 
74.
			PinTask = "An Taskleiste anheften" 
75.
			UnpinTask = "Von Taskleiste lösen" 
76.
'Italienisch - Italien 
77.
		Case 1040 
78.
			PinStart = "Aggiungi al menu Start" 
79.
			UnpinStart = "Rimuovi dal menu Start" 
80.
			PinTask = "Aggiungi alla barra delle applica###i" 
81.
			UnpinTask = "Rimuovi dalla barra delle applica###i" 
82.
'Italienisch - Schweiz 
83.
		Case 2064 
84.
			PinStart = "Aggiungi al menu Start" 
85.
			UnpinStart = "Rimuovi dal menu Start" 
86.
			PinTask = "Aggiungi alla barra delle applica###i" 
87.
			UnpinTask = "Rimuovi dalla barra delle applica###i" 
88.
'Französisch - Frankreich 
89.
		Case 1036 
90.
			PinStart = "Épingler au menu Démarrer" 
91.
			UnpinStart = "Détacher du menu Démarrer" 
92.
			PinTask = "Épingler à la barre des tâches" 
93.
			UnpinTask = "Détacher de la barre des tâches" 
94.
'Französisch - Schweiz 
95.
		Case 4108 
96.
			PinStart = "Épingler au menu Démarrer" 
97.
			UnpinStart = "Détacher du menu Démarrer" 
98.
			PinTask = "Épingler à la barre des tâches" 
99.
			UnpinTask = "Détacher de la barre des tâches" 
100.
		Case Else 
101.
			Wscript.quit 
102.
End Select 
103.
 
104.
 
105.
Call Main 
106.
 
107.
Sub Main() 
108.
	'Entferne alle Microsoft Standardeinträge aus dem Startmenü 
109.
    DeleteStartMenuApps HKEY_CURRENT_USER, "", arrDeleteApps 
110.
 
111.
	'Pinne oder unpinne Programme. Möglich sind: PinStart,UnpinStart,PinTask,UnpinTask 
112.
    DoVerb UnpinTask, strAllUsersProgramsPath & "Windows Media Player.lnk", FALSE, "" 
113.
	DoVerb UnpinStart, strAllUsersProgramsPath & "Windows Media Player.lnk", FALSE, "" 
114.
	DoVerb UnpinStart, strUserProgramsPath & "Internet Explorer.lnk", FALSE, "" 
115.
	DoVerb PinTask, "P:\test\test.exe", TRUE, "Steuern" 
116.
	 DoVerb PinTask, "P:\branchenapp\branchenapp.exe", TRUE, "Brachenapp" 
117.
	 
118.
    'Office pinnen 
119.
	DoVerb PinTask, strAllUsersProgramsPath & "Microsoft Office\Microsoft Word 2013.lnk", FALSE, "" 
120.
	DoVerb PinTask, strAllUsersProgramsPath & "Microsoft Office\Microsoft Excel 2013.lnk", FALSE, "" 
121.
	DoVerb PinTask, strAllUsersProgramsPath & "Microsoft Office\Microsoft Outlook 2013.lnk", FALSE, "" 
122.
	 
123.
	'Biegt den Pfad der Verknüpfungen um, die als Netzwerkdatei gekennzeichnet sind 
124.
	RedefineNetShortcuts 
125.
	 
126.
	'DeleteSelf 
127.
End Sub 
128.
 
129.
 
130.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
131.
'     FUNKTIONEN UND SUB PROZEDUREN 
132.
'=-=-=-=-=-=-=-=-=-=-=-=-= 
133.
Function DoVerb(strVerb, strPath, Netfile, strShortcutName) 
134.
    On Error Resume Next 
135.
		If Netfile = TRUE Then 
136.
			If strShortcutName = "" Then 
137.
				strShortcutName = "Verknüpfung" & ShortcutCount 
138.
				ShortcutCount = ShortcutCount + 1 
139.
			End If 
140.
			If objFSO.FileExists(strUserAppdataTaskbarPath & strShortcutName & ".lnk") Then 
141.
				Exit Function 
142.
			End If 
143.
			If not objFSO.FileExists(strSystem32Path & arrLocalExe(counter)) Then 
144.
				Do Until objFSO.FileExists(strSystem32Path & arrLocalExe(counter)) 
145.
					counter = counter + 1 
146.
					If z >= Ubound(arrLocalExe) Then 
147.
						Exit Function 
148.
					Else 
149.
						z = z + 1 
150.
					End If 
151.
				Loop 
152.
			End If 
153.
			Set lnkTemp = objShell.CreateShortcut(strTempDir & strShortcutName & ".lnk") 
154.
				lnkTemp.TargetPath = strSystem32Path & arrLocalExe(counter) 
155.
				lnkTemp.Arguments = "" 
156.
				lnkTemp.Description = "" 
157.
				lnkTemp.WorkingDirectory = strSystem32Path 
158.
				lnkTemp.IconLocation = strPath &", 0" 
159.
				lnkTemp.Save 
160.
			ReDim Preserve arrShortcuts(UBound(arrShortcuts) + 1) 
161.
			arrShortcuts(UBound(arrShortcuts)) = strUserAppdataTaskbarPath & strShortcutName & ".lnk" 
162.
			ReDim Preserve arrNetfilePath(UBound(arrNetfilePath) + 1) 
163.
			arrNetfilePath(UBound(arrNetfilePath)) = strPath 
164.
			If counter = UBound(arrLocalExe) Then 
165.
				counter = 0 
166.
			Else 
167.
				counter = counter + 1 
168.
			End If 
169.
			strFolder    = objFSO.GetParentFolderName(strTempDir & strShortcutName & ".lnk") 
170.
			strFile        = objFSO.GetFileName(strTempDir & strShortcutName & ".lnk") 
171.
			Set objFolder        = objApplication.NameSpace(strFolder) 
172.
			Set objFolderItem    = objFolder.ParseName(strFile) 
173.
		Else 
174.
		    strFolder    = objFSO.GetParentFolderName(strPath) 
175.
			strFile        = objFSO.GetFileName(strPath) 
176.
		    Set objFolder        = objApplication.NameSpace(strFolder) 
177.
			Set objFolderItem    = objFolder.ParseName(strFile) 
178.
		End If 
179.
        For Each ItemVerb In objFolderItem.Verbs 
180.
            If StrComp(Replace(ItemVerb.Name, "&", ""), strVerb, vbTextCompare) = 0 Then 
181.
                ItemVerb.DoIt 
182.
				If Netfile = TRUE Then 
183.
					If objFSO.FileExists(lnkTemp) Then 
184.
						objFSO.DeleteFile lnkTemp 
185.
					End If 
186.
				End If 
187.
                Exit Function 
188.
            End If 
189.
        Next 
190.
    On Error Goto 0 
191.
End Function 
192.
 
193.
Sub RedefineNetShortcuts 
194.
	For n = 0 To Ubound(arrShortcuts) 
195.
		strFolder    = objFSO.GetParentFolderName(arrNetfilePath(n)) 
196.
		Set lnkFinal = objShell.CreateShortcut(arrShortcuts(n)) 
197.
			lnkFinal.TargetPath = arrNetfilePath(n) 
198.
			lnkFinal.Arguments = "" 
199.
			lnkFinal.Description = "" 
200.
			lnkFinal.IconLocation = arrNetfilePath(n) &", 0" 
201.
			lnkFinal.WorkingDirectory = strFolder & "\" 
202.
			lnkFinal.Save 
203.
	Next 
204.
End Sub 
205.
 
206.
Sub DeleteStartMenuApps(hDefKey, sSubKeyUser, arrDeleteApps) 
207.
    If Len(sSubKeyUser) > 0 Then 
208.
        sSubKeyName = sSubKeyUser & "\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist" 
209.
    Else 
210.
        sSubKeyName = "Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist" 
211.
    End If    
212.
    
213.
    objRegistry.EnumKey hDefKey, sSubKeyName, arrSubKeys 
214.
    
215.
    If IsArray(arrSubKeys) Then 
216.
        For i = 0 to UBound(arrSubKeys) 
217.
            sTempSubKeyName = sSubKeyName & "\" & arrSubKeys(i) & "\Count" 
218.
            objRegistry.EnumValues hDefKey, sTempSubKeyName, arrSubValues 
219.
         
220.
            If IsArray(arrSubValues) Then 
221.
                For m = 0 to UBound(arrSubValues) 
222.
                    For n = 0 to UBound(arrDeleteApps) 
223.
                        If InStr(UCase(RunROT13(arrSubValues(m))), UCase(arrDeleteApps(n))) > 0 Then 
224.
                            objRegistry.DeleteValue hDefKey, sTempSubKeyName, arrSubValues(m) 
225.
                        End If 
226.
                    Next 
227.
                Next 
228.
            End If 
229.
        Next 
230.
    End If 
231.
End Sub 
232.
 
233.
'Entschlüssle ROT13 Einträge der Registry 
234.
Function RunROT13(strInput) 
235.
    For i = 1 to Len(strInput) 
236.
        iChr = Asc(Mid(strInput, i, 1)) 
237.
        If (iChr >= 65 and iChr <= 77) Or (iChr >= 97 and iChr <= 109) Then 
238.
            strOutput = strOutput & Chr(iChr +13) 
239.
        ElseIf (iChr >= 78 and iChr <= 90) Or (iChr >= 110 and iChr <= 122) Then 
240.
            strOutput = strOutput & Chr(iChr -13) 
241.
        Else 
242.
            strOutput = strOutput & Chr(iChr) 
243.
        End If 
244.
    Next 
245.
    RunROT13 = strOutput 
246.
End Function 
247.
 
248.
'Suche installiertes Programm nach dem "DisplayName" 
249.
Function IsProgramInstalled(objRegistry, strProgramDisplayName) 
250.
    intRegistryHive    = HKEY_LOCAL_MACHINE 
251.
	If objShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "x86" Then 
252.
		strRegistryKey    = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" 
253.
	Else 
254.
		strRegistryKey    = "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" 
255.
	End If 
256.
    
257.
    objRegistry.EnumKey intRegistryHive, strRegistryKey, arrSubkeys 
258.
    
259.
    IsProgramInstalled = FALSE 
260.
    
261.
    For Each strSubkey In arrSubkeys 
262.
        strDisplayName = ReadRegistryValue(objRegistry, "STRING", intRegistryHive, strRegistryKey & "\" & strSubkey, "DisplayName") 
263.
        
264.
        If UCase(strDisplayName) = UCase(strProgramDisplayName) Then 
265.
            IsProgramInstalled = TRUE 
266.
            Exit For 
267.
        End If 
268.
    Next 
269.
	If not objShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "x86" Then 
270.
		strRegistryKey    = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" 
271.
		 
272.
		objRegistry.EnumKey intRegistryHive, strRegistryKey, arrSubkeys 
273.
	    
274.
		IsProgramInstalled = FALSE 
275.
	    
276.
		For Each strSubkey In arrSubkeys 
277.
			strDisplayName = ReadRegistryValue(objRegistry, "STRING", intRegistryHive, strRegistryKey & "\" & strSubkey, "DisplayName") 
278.
		    
279.
			If UCase(strDisplayName) = UCase(strProgramDisplayName) Then 
280.
				IsProgramInstalled = TRUE 
281.
				Exit For 
282.
			End If 
283.
		Next 
284.
	End If 
285.
End Function 
286.
 
287.
'Funktion um Registrywerte auszulesen und zurückzugeben 
288.
Function ReadRegistryValue(objRegistry, strType, intRegistryHive, strSubKeyName, sValueName) 
289.
    Select Case UCase(strType) 
290.
        Case "DWORD" 
291.
            objRegistry.GetDWORDValue intRegistryHive, strSubKeyName, sValueName, strValue 
292.
        Case "EXPANDEDSTRING" 
293.
            objRegistry.GetExpandedStringValue intRegistryHive, strSubKeyName, sValueName, strValue 
294.
        Case "MULTISTRING" 
295.
            objRegistry.GetMultiStringValue intRegistryHive, strSubKeyName, sValueName, strValue 
296.
        Case "STRING" 
297.
            objRegistry.GetStringValue intRegistryHive, strSubKeyName, sValueName, strValue 
298.
		Case "QWORD" 
299.
            objRegistry.GetQWORDValue intRegistryHive, strSubKeyName, sValueName, strValue 
300.
 
301.
    End Select 
302.
    
303.
    ReadRegistryValue = strValue 
304.
End Function 
305.
 
306.
'Löscht das Script selbst 
307.
Sub DeleteSelf() 
308.
        'Löscht das aktuell ausgeführte Script 
309.
        objFSO.DeleteFile WScript.ScriptFullName 
310.
End Sub
Mitglied: kontext
17.07.2013, aktualisiert um 15:00 Uhr
Hallo @gilldex,

auch wenn für dich die manuelle Variante keine Option ist / war, hier trotzdem kurz das Vorgehen ...
... evtl. ist es ja für manche in Zukunft hilfreich und IMHO geht diese Variante ein wenig schneller

  • Neues Textdokument erstellen auf dem Desktop
  • Umbenennen in Datei.exe (wichtig - Dateiendung muss EXE sein)
  • Rechte Maustaste auf die soeben erstellte Datei - an Taskleiste anheften (Datei auf dem Desktop kann gelöscht werden)
  • Rechte Maustaste auf das Symbol in der Taskleiste und Eigenschaften öffnen
  • In der Registerkarte Verknüpfung das Ziel anpassen (ist noch die EXE vom Desktop hinterleg)
  • Übernehmen und OK (evtl. noch Symbol anpassen) und das war es ...

Geht mit normalen Pfadangabe - Netzlaufwerk\Speicherort aber auch mit UNC Pfad

Gruß
@kontext
Bitte warten ..
Mitglied: gilldex
17.07.2013 um 17:43 Uhr
Hallo kontext

Finde ich gut dass es du noch ergänzt für die, welche es so machen wollen. Wie gesagt, bei mir ging es um ein Deployment von mehreren Stationen. Da kann man den Usern nicht gut die manuelle Anleitung in die Hand drücken und sagen: "Mach da mal die nötigen Programme selbst an die Taskbar oder Taskleist". ;)
Da lohnt sich der einmalige Aufwand für das Script also schon sehr wenn man bedenkt dass Microsoft bewusst keine Lösung für diese Situation bereit hat. (3 Objekte in der Taskbar und 5 in im Startpanel ist das Maximum was Microsoft für ein Deployment bereit hält.)

Einen schönen Abend wünsche ich dir!

Gruss

gilldex
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 10
Surface 4 Pro Netzlaufwerk verbinden (4)

Frage von Yannosch zum Thema Windows 10 ...

Windows Netzwerk
Netzlaufwerk offline verfügbar für Mac (1)

Frage von PharIT zum Thema Windows Netzwerk ...

Windows 10
VPN Netzlaufwerk leer (4)

Frage von Edaseins zum Thema Windows 10 ...

Windows Server
Programme in RDP Sitzungen langsam - nicht alle user betroffen (5)

Frage von killtec zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...