Learn Exchange the Guru way !!!


Exchange Server and .Net Framework 4.6.1 or above: Is this thing on?

At Microsoft, there are different team who build or develop Exchange server, windows server and .net. So they start testing the compatibility after the beta release.

Now with .net framework which is being deployed using windows update you would not know when your exchange server got new .net framework. You may not even bother to check what is your current .net framework version is because your exchange server is running fine.

The major issue which .net framework can cause is the performance issue and you might not see it happening in the front end. If you are on Exchange 2013 CU12 or Exchange 2016 CU1 and you get .net framework 4.6.1 installed, then you will have performance issue mainly with the high CPU utilization.

KB3102467 is .net framework 4.6.1

If you are on Exchange CU12 or Exchange 2016 CU1 then look for KB3102467 in your installed updates. If it is installed, then you have to uninstall it.

Here are the steps to uninstall .net framework 4.6.1 and block it.

If your Exchange server has automatically updated to 4.6.1 (KB 3102467) and has not restarted yet, then we should restart the server to complete the deployment. Do not uninstall at this point. Don’t restart here. Step 3 is restart for the Exchange servers which are due for the restart

-Run the Pre-restart script

-Restart the server

If there was no restart due, then you can start from here.

-Stop all Exchange services.  We can run the following cmd from EMS

(Test-ServiceHealth).ServicesRunning | %{Stop-Service $_ -Force}

-Go to add/remove programs, select view installed updates, then find the entry for KB3102467.  Uninstall the update.

-Run the Pre-restart script . Not required if you have already run it while completing the deployment of .net 4.6.1

-Restart the server

-Let us block .net framework 4.6.1 by adding the following regkey as mentioned here

Or you can download the registry file from gallery here and run it then click yes when prompted.

Back up the registry. Then Start Registry Editor. To do this, click Start, type regedit in the Start Search box, and then press Enter.

Locate and click the following subkey:
HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP

After you select this subkey, point to New on the Edit menu, and then click Key.

Type WU, and then press Enter.

Right-click WU, point to New, and then click DWORD Value.

Type BlockNetFramework461, and then press Enter.

Right-click BlockNetFramework461, and then click Modify.

In the Value data box, type 1, and then click OK.

On the File menu, click Exit to exit Registry Editor.

-Check the version of the .NET Framework and verify that it is showing 4.5.2.  If it shows a version prior to 4.5.2 go to windows update, check for updates, and install .NET 4.5.2 via the KB2934520 update.  Do NOT select 4.6.1/KB3102467.  Reboot when prompted.  If it shows 4.5.2 proceed to the next step

-Stop services using the command by running the cmd.

(Test-ServiceHealth).ServicesRunning | %{Stop-Service $_ -Force}

-Run a repair of .NET 4.5.2 by downloading the offline installer, running setup, and choosing the repair option from here.

    Note: you don’t need to repair if you download and deploy new update.

-Restart the server

-Download and deploy the February security updates for .NET 4.5.2 from Windows update, checking for updates, and install KB3122654 & KB3127226.  Do NOT install KB3102467, unselect it.

-Restart the server

-Post restart verify that the .NET Framework version is 4.5.2 and KB3122654 and KB3127226 are installed.

-Run the Post-restart to bring back all exchange roles and cluster group

Microsoft Exchange team has talked about this here:


Exchange 2013 CU 13 and Exchange 2016 CU2 Released and changed everything.

Now let us see Exchange 2013 CU 13 and Exchange 2016 CU2. Microsoft released new updates on June 2016 and declared than .Net Framework 4.6.1 is supported with Exchange 2013 CU13 and Exchange 2016 CU2.

Microsoft recommends to 1st deploy CU then .net framework in an upgrade but in a new deployment either way 1st .net framework 4.6.1 or Exchange 2013 CU 13 /Exchange 2016 CU2 but we would recommend Exchange 2013 CU 13 or Exchange 2016 CU2 1st then .net Framework 4.6.1 in any situation.

Mail – Prabhat Nigam – Outlook

-Run the Pre-restart script

-Deploy Exchange 2013 CU13 or Exchange 2016 CU2

-Then remove the registry key which is blocking .net framework 4.6.1

-Run windows update and deploy KB3102467 which is .net framework 4.6.1

-Restart the server

-Don't stop here. We have to deploy a hotfix as well which is different for all operating systems. So download the hotfix as per your Operating system and deploy.

Windows Server 2008/2008R2 – KB3146716

Windows Server 2012 – KB3146714

Windows Server 2012R2 – KB3146715

-Restart the server

-Run the Post-restart to bring back all exchange roles and cluster group

Microsoft Exchange Team has also shared the update here:

We can also check the exchange supportability matrix here.


Prabhat Nigam

Microsoft MVP | Office Servers and Services


2 Responses to “Exchange Server and .Net Framework 4.6.1 or above: Is this thing on?”

  1. Scott Irving Says:

    What would be the recommended action for an exchange 2013 environment running at CU8 on windows 2012 R2 that has .NET framework 4.6.1 installed (KB3102467)?

    Would it be advisable to upgrade straight to CU15 / CU16 to overcome the issue and become supported again or follow the .NET framework 4.6.1 uninstall as specified above and then carry out the CU upgrade?

  2. Exchange Server: .Net Framework 4.7 Do Not Install Right Now « Says:

    […] I think we did the same earlier here. […]

Leave a Reply