ngen.exe is constantly using CPU
Solution 1:
Following Isxek's advice, I used Process Explorer to see what's going on. I found this:
Processes that are ending are highlighted red; ones just starting are green. This shows that ngen.exe is constantly ending and being restarted. From the graph at the top you can see it runs for about one second each time.
As Jim B says, netfxupdate.exe is working its way through the .NET framework. Mine had been going for several weeks, so for some reason it looks like it had got stuck on something and wasn't making any progress.
Using regedit, I found the entry that starts netfxupdate.exe whenever I start up my PC:
It looks like it's stuck on the .NET 1.1 libraries for some reason. I'm a .NET developer and some of my code runs on .NET 1.1. It all seems to be working fine, so I removed this entry from the registry and rebooted my machine.
It's been a couple of days now with no problems (even when developing against .NET 1.1), so I'm happy with this solution.
Solution 2:
NGEN is the native code generator for the dotnet framework. it will churn away as a background task until the native assemblies have been generated
Solution 3:
The file ngen.exe
appears to be part of Microsoft .NET Framework, according to ProcessLibrary.com. I did a search for it in a Windows 7 laptop I'm using, but I could not find it.
You could use Process Explorer to determine whether it's a legitimate file from Microsoft. Right-click on ngen.exe there when you see it, choose Properties, then click on the Verify button. You should see something like this (the image is for svchost.exe
):
If it does not register as verified, you might want to try the advice given here: How can I remove malicious spyware, malware, adware, viruses, trojans or rootkits from my PC?
Solution 4:
FYI - The NetFxUpdate on my Windows 2008R2 got stuck as well after I installed v1.1, %temp%\netfxupdate.log shows:
START: invocation ID = 1; version = v1.1.4322; params =
REGWRITE: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce NetFxUpdate_v1.1.4322="C:\Windows\Microsoft.NET\Framework\v1.1.4322\netfxupdate.exe" 0 v1.1.4322 GAC + NI NID
REGDELETE: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run NetFxUpdate_v1.1.4322
INVOKE: "C:\Windows\Microsoft.NET\Framework\v1.1.4322\netfxupdate.exe" 2 v1.1.4322 NI NID
START: invocation ID = 2; version = v1.1.4322; params =
and then (over and over again):
INVOKE: "C:\Windows\Microsoft.NET\Framework\v1.1.4322\ngen.exe" /nologo /silent "C:\Windows\Microsoft.NET\Framework\v1.1.4322\System.dll"
RETURN: -1
Same fix as you, remove the HKLM...\Run key.