Posted by mgifford on July 18, 2014 at 2:58pm
We went through the process last year of documenting how to set up Drupal on Windows:
https://github.com/OpenConceptConsulting/drupal-windows-server
There are lots of pieces of documentation, but as a long time LAMP user I couldn't find anything to consolidate it.
This needs some help from Windows System Admins, but should hopefully help some folks take the next step.
Please fork and suggest pull requests to update the documentation.

Comments
Windows Server 2012 and IIS 8.5
Thank you very much for posting this information, especially the web.config file. I have manually installed PHP 5.3x, MySQL 5.63 on 2012 r2/IIS 8.5.
It's been quite the trial and error to set up the multisite correctly so that the subdomains of the parent correctly display the images. I was previously on a Win 2003 IIS 6 server and had to migrate. The sites share the main install directory while the sub domains have different theme and file directories which is where I was having the most problem.
domain.com = parent
. includes
. misc
. modules
. profiles
. scripts
. sites/sub.domain.com (sub has it's own files and theme directories)
. themes
I kept getting HTTP Error 500.52 - URL Rewrite Module Error when I tried to access images in the sub.domain.com/files directory. It wasn't until I looked at your web.config file and saw the
<location path="." inheritInChildApplications="false">and read more on this that the multisite started to work.<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- inheritChildApplications is set to false to enable multisites -->
<location path="." inheritInChildApplications="false">
<system.webServer>
<!-- Don't show directory listings for URLs which map to a directory. -->
<directoryBrowse enabled="false" />
<rewrite>
<rules>
<rule name="Protect files and directories from prying eyes" stopProcessing="true">
<match url=".(engine|inc|info|install|make|module|profile|test|po|sh|.sql|theme|tpl(.php)?|xtmpl)$|^(..|Entries.|Repository|Root|Tag|Template)$" />
<action type="CustomResponse" statusCode="403" subStatusCode="0" statusReason="Forbidden" statusDescription="Access is forbidden." />
</rule>
<rule name="Force simple error message for requests for non-existent favicon.ico" stopProcessing="true">
<match url="favicon.ico" />
<action type="CustomResponse" statusCode="404" subStatusCode="1" statusReason="File Not Found" statusDescription="The requested file favicon.ico was not found" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
</rule>
<!-- Rewrite URLs of the form 'x' to the form 'index.php?q=x'. -->
<rule name="Short URLs" stopProcessing="true">
<match url="^(.)$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?q={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/index.php" responseMode="ExecuteURL" />
</httpErrors>
<defaultDocument>
<!-- Set the default document -->
<files>
<remove value="index.php" />
<add value="index.php" />
</files>
</defaultDocument>
</system.webServer>
</location>
</configuration>
The web.config I used is from the latest drupal 7.34 version. I placed the modified web.config file in the parent root and left the unmodified web.config in the sub/child and it seems to be working.
My one concern is will this be secure? I do have the sub.domain.com set up as https but not knowing near enough about 2012/iis 8 I wasn't sure.
Thanks for sharing your work.