Programma's unpinnen via script onder Windows

Door Tomba op dinsdag 27 augustus 2013 09:43 - Reacties (14)
Categorie: Systeembeheer, Views: 2.668

Windows 7 heeft de mogelijkheid geintroduceerd om vaak gebruikte programma's vast te pinnen aan
het start menu, zodat je sneller toegang hebt tot deze programma's. Als Systeembeheerder wil je echter niet altijd de standaardkeuze van Microsoft volgen, zo vind ik het erg lelijk dat de Mediaplayer (die bij ons op de zaak bij gebrek aan geluidskaarten in de PC's toch niet te gebruiken is) standaard vastgemaakt zit aan het startmenu bij een nieuwe gebruiker. Gelukkig kan dit vrij simpel opgelost worden mbv een VBS script.

Omdat unpinnen alleen mogelijk is als de snelkoppeling naar het programma in het startmenu staat moet deze echter eerst in het startmenu gekopieerd worden: (in dit voorbeeld heeft de GPO ID 096FF540-DC75-4038-9B32-09DB2E764F32, ik heb de Windows Media Player.lnk in de betreffende Scripts map geplaatst. Het startmenu van de eindgebruikers bevindt zich op de server \\fileserver) Hiervoor gebruik ik een batch file:


code:
1
2
3
4
5
6
@echo off
Echo Copying Windows Media Player Shortcut to Start Menu
copy "\\nl.contoso.com\SysVol\nl.contoso.com\Policies\{096FF540-DC75-4038-9B32-09DB2E764F32}\User\Scripts\Logon\Windows Media Player.lnk" "\\fileserver\personal$\%username%\Startmenu\Programs"

Echo Unpinning Windows Media Player
cscript "\\nl.contoso.com\SysVol\nl.contoso.com\Policies\{096FF540-DC75-4038-9B32-09DB2E764F32\User\Scripts\Logon\Unpin_Mplayer.vbs


De aangeroepen VBS

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Option Explicit

Const CSIDL_STARTMENU = &HB
Const CSIDL_COMMON_PROGRAMS = &H17

Dim objShell, objFSO
Dim objCurrentUserStartFolder
Dim strCurrentUserStartFolderPath
Dim objAllUsersProgramsFolder
Dim strAllUsersProgramsPath
Dim objFolder
Dim objFolderItem
Dim colVerbs
Dim objVerb

Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objCurrentUserStartFolder = objShell.NameSpace (CSIDL_STARTMENU)
strCurrentUserStartFolderPath = objCurrentUserStartFolder.Self.Path

Set objAllUsersProgramsFolder = objShell.NameSpace(CSIDL_COMMON_PROGRAMS)
strAllUsersProgramsPath = objAllUsersProgramsFolder.Self.Path

If objFSO.FileExists(strCurrentUserStartFolderPath & "\Programs\Windows Media Player.lnk") Then
    wscript.echo "We MOve"
    Set objFolder = objShell.Namespace(strCurrentUserStartFolderPath & "\Programs")
    Set objFolderItem = objFolder.ParseName("Windows Media Player.lnk")
    Set colVerbs = objFolderItem.Verbs
    For Each objVerb In colVerbs
        wscript.echo objverb
        If Replace(objVerb.name, "&", "") = "Unpin from Taskbar" Then objVerb.DoIt
            If Replace(objVerb.name, "&", "") = "Van de taakbalk losmaken" Then objVerb.DoIt
    Next
End If


Uiteraard kan eea aangepast worden om juist te pinnen ipv unpinnen of om andere programma's op deze wijze te unpinnen.

Volgende: Use Checkpoint Mobile Access blade on Ubuntu 09-'13 Use Checkpoint Mobile Access blade on Ubuntu
Volgende: Ads blocken met je eigen DNS server (2) 08-'13 Ads blocken met je eigen DNS server (2)

Reacties


Door Tweakers user TeGek, dinsdag 27 augustus 2013 10:25

Ook erg handig op een terminal server om de "Server manager" bij users te unpinnen. Erg stom dat Microsoft hier nog steeds geen GPO voor heeft behalve "Remove all unpinned items"

Door Tweakers user Tomba, dinsdag 27 augustus 2013 10:33

TeGek schreef op dinsdag 27 augustus 2013 @ 10:25:
Ook erg handig op een terminal server om de "Server manager" bij users te unpinnen. Erg stom dat Microsoft hier nog steeds geen GPO voor heeft behalve "Remove all unpinned items"
Daar hebben we dit script inderdaad ook ingezet :)

Door Tweakers user Evil Genius, dinsdag 27 augustus 2013 10:33

Zoals je al hebt gemerkt denk ik is dit script echt afhankelijk van de taal van je OS. Tevens werkt het ook voor het pinnen van een folder aan je Start Menu. Maar voor het pinnen van folders aan je start menu zul je de optie eerst beschikbaar moeten maken binnen Windows sinds dat standaard geblokkeerd is.

En-/Disable Folder Pin-to-StartMenu

[Reactie gewijzigd op dinsdag 27 augustus 2013 10:35]


Door Tweakers user Evil Genius, dinsdag 27 augustus 2013 10:34

.

[Reactie gewijzigd op dinsdag 27 augustus 2013 10:34]


Door Tweakers user Tomba, dinsdag 27 augustus 2013 10:34

Evil Genius schreef op dinsdag 27 augustus 2013 @ 10:33:
Zoals je al hebt gemerkt denk ik is dit script echt afhankelijk van de taal van je OS. Tevens werkt het ook voor het pinnen van een folder aan je Start Menu. Maar voor het pinnen van folders aan je start menu zul je de optie eerst beschikbaar moeten maken binnen Windows sinds dat standaard geblokkeerd is.

En-/Disable Folder Pin-to-Taskbar
Hij houdt rekening met Engels en Nederlands (de enige 2 talen die wij hier gebruiken in het bedrijf):
If Replace(objVerb.name, "&", "") = "Unpin from Taskbar" Then objVerb.DoIt
If Replace(objVerb.name, "&", "") = "Van de taakbalk losmaken" Then objVerb.DoIt

Door Tweakers user Evil Genius, dinsdag 27 augustus 2013 10:36

Jup dat had ik gezien, maar om het even voor je lezers te vermelden :) Maar handig script, werk zelf veel met OS-imaging waar ik ook dit script veelvuldig gebruik voor verschillende klanten.

Door Tweakers user Squ1zZy, dinsdag 27 augustus 2013 15:55

Is het niet makkelijker om Powershell te gebruiken gezien het om W7 machines gaat?

Bouw zoiets om bv:
http://gallery.technet.mi...3f-4a94-8dc3-e406eb30b750

Door Tweakers user KnoxNL, dinsdag 27 augustus 2013 19:15

RES Powerfuse :)

Verder leuke blog en oplossing.

Door Tweakers user xFeverr, dinsdag 27 augustus 2013 22:11

Voor zover ik weet staan je pinned items in een directory in je user profile. Zo moest ik een keer een iTunes snelkoppeling vervangen...

Door Tweakers user Dreeke fixed, woensdag 28 augustus 2013 08:29

Ik heb een ander probleem met het pinnen, sommige progjes zijn niet te pinnen, hoe los je dat dan op?

Door Tweakers user MAX3400, woensdag 28 augustus 2013 15:10

KnoxNL schreef op dinsdag 27 augustus 2013 @ 19:15:
RES Powerfuse :)

Verder leuke blog en oplossing.
Volgens mij loop je dan een aantal versies achter; Workspace Manager is de recente naamgeving.

Neemt niet weg dat er meerdere wegen naar Rome leiden :)

Door Tweakers user Redsandro, donderdag 29 augustus 2013 23:34

Met wat sleutelwoorden kan je dit meertalig maken.
(Hoewel ik nu zie dat ik een woordje voor Nederlands (Start) ben vergeten).

Door Tweakers user Tomba, vrijdag 30 augustus 2013 07:41

Redsandro schreef op donderdag 29 augustus 2013 @ 23:34:
Met wat sleutelwoorden kan je dit meertalig maken.
(Hoewel ik nu zie dat ik een woordje voor Nederlands (Start) ben vergeten).
De variant die ik op mijn blog heb staan houdt rekening met Engels en Nederlands (de talen die wij hier intern gebruiken)
If Replace(objVerb.name, "&", "") = "Unpin from Taskbar" Then objVerb.DoIt
If Replace(objVerb.name, "&", "") = "Van de taakbalk losmaken" Then objVerb.DoIt

Door Tweakers user Redsandro, vrijdag 30 augustus 2013 17:29

Ik vind het wel idioot dat hier niet gewoon een universal commando voor is. Ik schreef het voor een package manager voor Windows (Chocolatey) en die moet gewoon internationaal kunnen werken.

Maar nee dan moet je eigenlijk voor alle talen uit gaan zoeken welke sleutelwoorden ze gebruiken.

Reageren is niet meer mogelijk