Torniamo a parlare di ADSI.
Tempo fa affrontai un progetto in cui si aveva la necessità di cambiare il nome ad un WebSite all'interno di IIS via codice. In entrata potevo avere 2 valori, Identificativo website e valore stringa da assegnare.

Naturalmente la risposta è stata ADSI.
Il metodo che segue effettua una connessione diretta al ID interessato e ne imposta la proprietà ServerComment.
Al termine dell'operazione viene lanciato il CommitChange per rendere persistenti le modifiche.
Nel caso in cui il cambio di valore fallisca, (questo può accadere spesso e volentieri) il metodo integra un sistema di retry.  Attende 2 secondi e riparte con l'esecuzione.

             ///

             /// Imposta nuovo server comment ad un website

             ///

             /// long IDWebSite

             /// string il servercomment che verrà aggiunto ad IIS

             private void changeIISName(long IDWebsite, string Nome)

             {

                    int Contatore = 0;

                    int retrytime = 5;

                    int elapsetime = 2000;

                    retry:

                           try

                           {

 

                                  DirectoryEntry iisWeb = null;

                                  iisWeb = new DirectoryEntry(@"IIS://" + "localhost" + @"/W3SVC/" + IDWebsite);       

                                 iisWeb.Properties["ServerComment"].Value = Nome;

       

                                                                                                                     iisWeb.CommitChanges();       

                                  iisWeb.Close();

                                  iisWeb.Dispose();

                           }

                           catch (System.Exception ex)

                           {

                                  // Autmento il contatore

                                  if (Contatore < retrytime)

                                  {

                                        Contatore++;

                                        System.Threading.Thread.Sleep(elapsetime);

                                        goto retry;

                                  }

                           }

             }

 

Come al solito bisogna referenziare System.DirectoryServices nel progetto per eseguire il codice.