Gestire i gadget tramite Group Policy

ciao a tutti e buon inizio settimana.

Un cliente mi ha chiesto recentemente come fare per “forzare” gli stessi gadget sul desktop degli utenti.

Non avendo mai affrontato l’argomento ho fatto qualche ricerca. Al momento i gadget e la sidebar non sono visti come una funzionalita’ “Enterprise” e probabilmente anche per questo motivo la loro gestione non e’ del tutto centralizzata e controllabile tramite Group Policy. Ho trovato da varie fonti interne e non alcune idee che ho consolidato in una soluzione che e’ a mio parere accettabile. Visto che non si tratta di qualcosa di documentato (o perlomeno documentato per intero..) ho pensato fosse interessante condividere il tutto in un posto solo (questo posto, o post, se preferite).

Nativamente Vista permette di gestire la Sidebar attraverso le Group Policy con una serie di istanze sotto Computer Configuration – Windows Components – Windows Sidebar:

image

Vi rendete conto immediatamente che queste istanze non permettono di impostare i gadget che vogliamo vengano installati.

Ma guardiamo un po’ in dettaglio come vengono gestiti i gadget in Vista.

I gadget si trovano nella cartella c:\program files\windows sidebar. In particolare in questa cartella si trova il file Settings.ini che decide, tra l’altro, quali sono per il profilo di default i gadget che devono essere caricati e come debbono essere impostati.

image

E’ importante notare che il file settings.ini, il vero responsabile di come vengono caricati e configurati i profili nella sidebar, e’ sotto la Windows File Protection (l’amministratore della macchina non ha full control su quel file), il che, in soldoni, significa che non puo’ essere modificato una volta creato dal sistema operativo dopo l’installazione; o meglio, ‘e possible farlo ma non e’ assolutamente consigliato

Una volta effettuato il logon, all’atto della creazione del profilo, il file settings.ini viene copiato all’interno della cartella del profilo C:\Users\nome_utente\AppData\Local\Microsoft\Windows Sidebar

E’ importante altresi’ notare che invece lo stesso file, una volta copiato in questa cartella personale del profilo utente, non si trova piu’ sotto Windows File Protection e quindi puo’ essere modificato tranquillamente. Infatti l’utente stesso, caricando nuovi gadget, ne modifica il contenuto.

Ora… proviamo a forzarne la configurazione: impostiamo 2 gadget di default

All’interno del file unattend.xml con cui e’ possibile configurare l’installazione di Vista (e Windows 2008), c’e’ la possibilita’ di decidere di default, in fase di installazione del sistema operativo, quali sono i gadget che devono essere caricati. Per esempio, se vogliamo che di default vengano caricati i gadget “SlideShow” e “Clock” quello che dobbiamo fare e’ modificare il file unattend.xml (utilizzando il Windows System Image Manager), e precisamente:

<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State">
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Sidebar" publicKeyToken="31bf3856ad364e35" language="neutral"
versionScope="nonSxS" processorArchitecture="x86">
<SidebarVisible>true</SidebarVisible>
<SidebarOnByDefault>true</SidebarOnByDefault>
<Gadget1>%PROGRAMFILES%\windows sidebar\gadgets\SlideShow.gadget,true</Gadget1>
<Gadget2>%PROGRAMFILES%\windows sidebar\gadgets\Clock.Gadget,true</Gadget2>
</component>
</settings>
</unattend>

Ora cosi’ facendo abbiamo ottenuto che nella cartela c:\program files\windows sidebar ci sia un file settings.ini che caricha di default i nostri due gadget e basta. Quando un nuovo utente fa logon si trovera’ automaticamente questi gadget.

Problema: i gadget sono controllabili dall’utente che ne puo’ installare di nuovi o aggiungere quelli pre-caricati.

Dunque… abbiamo il nostro bel file Settings.ini che, alla partenza della sidebar, mi forza i gadget che mi interessano. Peccato che i gadget, per loro natura, sono controllabili dall’utente il quale ne puo’ aggiungere alla sidebar di nuovi (per esempio tra quelli presenti nativamente).

Nel file Settings.ini esiste un comando che imposta una “black list” dei gadget che non possono essere aggiunti. La seguente riga per esempio stabilische che dalla lista dei gadget che possono essere aggiunti ne debbono essere esclusi alcuni (weather, cpu, contacts, currency, picture puzzle).

PickerDefaultPackageSkipList="Weather.gadget,Contacts.gadget,CPU.Gadget,Currency.Gadget,PicturePuzzle"

Problema: l’utente potrebbe in qualche modo modificare il proprio settings.ini e rimuovere questo comando

Per gli utenti piu’ “sgamati” non c’e’ molto da fare (infatti pur essendo difficile da immaginare quale sia il file da modificare, si tratta pur sempre di un file sul quale l’utente ha diritto di scrittura).

Pero’ gli si puo’ rendere la vita difficile :-)

L’idea e’ quella di poter rimpiazzare il file settings.ini (quello del profilo personale dell’utente) ogni volta che l’utente fa logon con un settings.ini da noi precedentemente configurato. Il risultato e’ che anche se l’utente si carica dei gadget, questi, al logon successivo, non vengono ricaricati in quanto l’impostazione, scritta nel file settings.ini, viene “persa” nel nuovo settings.ini che sovrascrive quello dell’utente.

Come fare per sostituire il file settings.ini ad ogni logon dell’utente? Uno script di logon? Ma no, siamo nel 2009… usiamo le Group Policy Preferences!

  • Copiare il file in una share “centrale” (per esempio la classica cartella NETLOGON che si trova su tutti i domain controller")
  • Create una File Replace Group Policy Preference all’interno di una GPO con:

image

In questo modo siete sicuri che ad ogni logon l’utente si trovera’ i gadget caricati di default (e non quelli che eventualmente e’ riuscito ad aggiungersi).

ale