Programma's unpinnen via script onder Windows

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

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.

Ads blocken met je eigen DNS server (2)

Door Tomba op dinsdag 27 augustus 2013 09:27 - Reacties (3)
CategorieŽn: Linux, Systeembeheer, Views: 2.834

In een vorige blogpost heb ik al uit de doeken gedaan hoe ik er thuis voor zorg dat onze internet ervaring zo reclamevrij mogelijk is. Aangezien ik zelf echter in de automatisering werk en er toch nog wat handwerk in deze versie zat, daarom (met dank aan de post van gjs! ) een verfijning. Een script, dat (via een cronjob) dagelijks checked of er een nieuwere versie is van de MVPS Host File en deze omzet naar een zonefile waar Bind ook wat mee kan:

code:
1
2
3
4
5
6
7
8
9
10
# Automatic ad blacklist by Tomba based on Gjs script (http://tomba.tweakblogs.net/blog/9171/ads-blocken-met-je-eigen-dns-server.html#r_127502 )

# Make backup of current zone file
cp /etc/bind/adservers /etc/bind/adservers.backup

# Get newest MVPS HOSTS File Update and write it to /etc/bind/adservers
curl -s http://winhelp2002.mvps.org/hosts.txt |grep -v localhost| grep ^127.0.0.1 |awk '{print $2}' |awk '{ sub(/\r$/,""); print "zone \""$0"\" { type master; notify no; file \"null.zone.file\"; };" }' > /etc/bind/adservers

# Restart Bind to make sure it picks up the new zonefile
service bind9 restart



Voor de mensen die niet helemaal thuis zijn in Linux, bovenstaande code in een bestand zetten en dan uitvoerbaar maken mbv chmod +x. (in dit voordeel heb ik het script update_adservers
in /etc/bind staan)

code:
1
chmod +x /etc/bind/update_adservers



In cron (aanpassen via crontab -e):

code:
1
0 0 * * *  /etc/bind/update_adservers


Hiermee wordt het script iedere dag om middernacht aangeroepen :)