title: applicationHost.config Error: Cannot write configuration file due to insufficient permissions with IIS shared configuration
body: <p>I use the <code>Microsoft.Web.Administration.ServerManager</code> class to manage a web site in a windows service. </p>
  
  <p>I use impersonation in my code, with an admin user, the user has the right to modify my <code>applicationHost.config</code> but I always get the following error when I do a <code>.CommitChanges();</code>.</p>
  
  <p>There is an example of my code.</p>
  
  <pre><code>  using (ServerManager svr = ServerManager.OpenRemote(args.IISName))
        {           
          Site currentSite = svr.Sites.Where(item =&gt; item.Id == args.WebSite.Id).FirstOrDefault();            
          currentSite.Applications[0].VirtualDirectories[0].PhysicalPath = args.WebSite.PhysicalPath;
          svr.CommitChanges();           
  
        }
  </code></pre>
  
  <p>I find <a href="http://learn.iis.net/page.aspx/268/shared-configuration-and-remote-provisioning/" rel="noreferrer">this solutions</a>, but my dcom properties object is lock</p>
  
  <blockquote>
    <p>Unhandled exception has occured in
    your application. If you click
    Continue, the application will ignore
    this error and attempt to continue. If
    you click Quit, the application will
    close immediately. FileName
    \?\UNC[MY
    PATH]\applicationHost.config Error:
    Cannot write configuration file due to
    insufficient permissions</p>
  </blockquote>
  
  <p>My setup is Windows 2008 R2, IIS 7.5, framework 3.5 and my applicationHost.config is on a SAN</p>
  
  <p>What could I try ?</p>
  
  <pre><code>See the end of this message for details on invoking 
  just-in-time (JIT) debugging instead of this dialog box.
  
  ************** Exception Text **************
  System.UnauthorizedAccessException: Filename: \\?\[MY PATH]\applicationHost.config
  Error: Cannot write configuration file due to insufficient permissions
  
  
     at Microsoft.Web.Administration.Interop.IAppHostWritableAdminManager.CommitChanges()
     at Microsoft.Web.Administration.ConfigurationManager.CommitChanges()
     at Microsoft.Web.Administration.ServerManager.CommitChanges()
     at Nms.IIS.Business.Manager.IISManager70.UpdateWebSiteEntity(UpdateWebSiteEntityArgs args)
     at Nms.IIS.Business.Service.IISService70.UpdateWebSiteEntity(UpdateWebSiteEntityArgs args)
     at IISSwitcher.Form1.btnProccess_Click(Object sender, EventArgs e) in C:\Form1.cs:line 70
     at System.Windows.Forms.Control.OnClick(EventArgs e)
     at System.Windows.Forms.Button.OnClick(EventArgs e)
     at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
     at System.Windows.Forms.Control.WmMouseUp(Message&amp; m, MouseButtons button, Int32 clicks)
     at System.Windows.Forms.Control.WndProc(Message&amp; m)
     at System.Windows.Forms.ButtonBase.WndProc(Message&amp; m)
     at System.Windows.Forms.Button.WndProc(Message&amp; m)
     at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)
     at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)
     at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  
  
  ************** Loaded Assemblies **************
  mscorlib
      Assembly Version: 2.0.0.0
      Win32 Version: 2.0.50727.4952 (win7RTMGDR.050727-4900)
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
  ----------------------------------------
  IISSwitcher
      Assembly Version: 1.0.0.0
      Win32 Version: 1.0.0.0
      CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/IISSwitcher.exe
  ----------------------------------------
  System.Windows.Forms
      Assembly Version: 2.0.0.0
      Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
  ----------------------------------------
  System
      Assembly Version: 2.0.0.0
      Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
  ----------------------------------------
  System.Drawing
      Assembly Version: 2.0.0.0
      Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
  ----------------------------------------
  Nms.IIS.Business
      Assembly Version: 1.0.295.8874
      Win32 Version: 1.0.295.8874
      CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Nms.IIS.Business.DLL
  ----------------------------------------
  Nms.Core
      Assembly Version: 1.0.1954.8874
      Win32 Version: 1.0.1954.8874
      CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Nms.Core.DLL
  ----------------------------------------
  System.Configuration
      Assembly Version: 2.0.0.0
      Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
  ----------------------------------------
  System.Xml
      Assembly Version: 2.0.0.0
      Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
  ----------------------------------------
  Microsoft.Practices.Unity
      Assembly Version: 1.2.0.0
      Win32 Version: 1.2.0.0
      CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Microsoft.Practices.Unity.DLL
  ----------------------------------------
  Microsoft.Practices.Unity.Interception
      Assembly Version: 1.2.0.0
      Win32 Version: 1.2.0.0
      CodeBase: file://Microsoft.Practices.Unity.Interception.DLL
  ----------------------------------------
  Microsoft.Practices.ObjectBuilder2
      Assembly Version: 2.2.0.0
      Win32 Version: 2.2.0.0
      CodeBase: file://Microsoft.Practices.ObjectBuilder2.DLL
  ----------------------------------------
  System.Core
      Assembly Version: 3.5.0.0
      Win32 Version: 3.5.30729.4926 built by: NetFXw7
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
  ----------------------------------------
  Nms.Core.resources
      Assembly Version: 1.0.1954.8874
      Win32 Version: 1.0.1954.8874
      CodeBase: file://Nms.Core.resources.DLL
  ----------------------------------------
  Unity_ILEmit_InterfaceProxies
      Assembly Version: 0.0.0.0
      Win32 Version: 1.2.0.0
      CodeBase: file://Microsoft.Practices.Unity.Interception.dll
  ----------------------------------------
  Microsoft.Web.Administration
      Assembly Version: 7.0.0.0
      Win32 Version: 6.1.7600.16385
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Web.Administration/7.0.0.0__31bf3856ad364e35/Microsoft.Web.Administration.dll
  ----------------------------------------
  System.Runtime.Serialization
      Assembly Version: 3.0.0.0
      Win32 Version: 3.0.4506.4926 (NetFXw7.030729-4900)
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Serialization/3.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
  ----------------------------------------
  
  ************** JIT Debugging **************
  To enable just-in-time (JIT) debugging, the .config file for this
  application or computer (machine.config) must have the
  jitDebugging value set in the system.windows.forms section.
  The application must also be compiled with debugging
  enabled.
  
  For example:
  
  &lt;configuration&gt;
      &lt;system.windows.forms jitDebugging="true" /&gt;
  &lt;/configuration&gt;
  
  When JIT debugging is enabled, any unhandled exception
  will be sent to the JIT debugger registered on the computer
  rather than be handled by this dialog box.
  </code></pre>