Ultimamente mi è capitato di dover stampare, nel mio caso all'interno di una ListBox, l'elenco dei template disponibili sia per Sharepoint Portal che per Windows Sharepoint Service, come avviene all'interno del file templatepick.aspx; per far ciò, il modello ad oggetti di Sharepoint ci viene incontro mettendoci a disposizione il metodo GetWebTemplates() della classe SPVirtualServer.

SPGlobalAdmin admin = new SPGlobalAdmin();

uint lcid = (uint)System.Threading.Thread.CurrentThread.CurrentUICulture.LCID;
SPWebTemplateCollection webTemplates = admin.VirtualServers[0].GetWebTemplates(lcid);
foreach(SPWebTemplate t in webTemplates)
{
list.Items.Add(new ListItem(t.Title, t.ID.ToString()));
}

Nel mio caso ho scelto di stampare tutti i template del primo virtual server, ma nulla mi vieta di ciclare sui template di tutti i virtual server disponibili.