ngen.exe hohe CPU-Leistung Windows 10 - Assemblys deinstallieren Endlosschleife

ngen.exe hohe CPU-Leistung Windows 10 - Assemblys deinstallieren Endlosschleife

Immer wenn ich meinen Computer ein paar Minuten im Leerlauf lasse, sehe ich bei meiner Rückkehr, dass mein Process Explorer anzeigt, dass „ngen.exe“ läuft und zwei meiner vier CPUs belegt.

Frage: Gibt es eine Möglichkeit, NGEN.exe als Hintergrundaufgabe zu deaktivieren?

Ich möchte (wie viele andere im Internet) alle .net-Binärdateien auf einmal kompilieren, anstatt den Computer dies jedes Mal „automatisch“ tun zu lassen, wenn ich ihn im Leerlauf lasse. Ich habe in allen Microsoft-Foren nachgesehen und bisher hat niemand eine vollständige Antwort auf dieses Problem, und viele haben dieselben Probleme.

Offenbar muss eine Bibliothek im .NET-Framework neu kompiliert werden, bleibt hängen, versetzt die CPU in einen hohen Zustand und führt immer wieder eine Schleife aus.

Ich habe gerade das gleiche Problem erlebt und es gibt einen anderen Threadversucht, sie zu beantworten, aber sie ist unvollständig

Regedit von /HKLM/SOFTWARE/Microsoft/Windows/Current Version/RUN hat keinen Eintrag zum Ausführen des .net-Compilers. Etwas anderes muss die Ursache für die Auslösung von ngen.exe sein.

Kann jemand andere Standorte posten, die dies möglicherweise auslösen?

Ich würde es gerne ausschalten, wie es sicher viele andere auch tun würden. Ich habe auch die automatischen Updates in Windows 10 deaktiviert.

UPDATE: Der Prozess-Explorer sagt, dass Folgendes ausgeführt wird:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" deinstallieren "C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\Microsoft.Vf‌​9a08577#\328b1bc4205‌​c08821860805bf5e6c99‌​e\Microsoft.VisualSt‌​udio.Tools.Applicati‌​ons.Hosting.ni.dll" /noroot /LegacyServiceBehavior – Viktor vor 5 Minuten

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe" deinstallieren "C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\Presentation‌​Framewo#\7fa93028119‌​b98117acfd5ea18f15c1‌​3\PresentationFramew‌​ork.ni.dll" /noroot /LegacyServiceBehavior – Viktor vor 4 Min. bearbeiten

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" deinstallieren "C:\WINDOWS\assembly\NativeImages_v2.0.50727_64\Microsoft.PowerShel#\23dfb41f48958215c80bbbc0c9177cb2\Microsoft.PowerShell.Commands.Utility.ni.dll" /noroot /LegacyServiceBehavior

Es läuft immer und immer und immer wieder. – das ist die Ausgabe vom Process Explorer. Es ist extrem nervig und es passiert anscheinend JEDES MAL, wenn ich meinen Schreibtisch verlasse.

FRAGE: Es scheint, als wären dies legitime Prozesse. Kennt jemand eine Möglichkeit, diese Deinstallationsbefehle manuell zu entfernen und das .NET-Framework einmal vollständig zu kompilieren, anstatt es immer wieder in einer Schleife laufen zu lassen?

AKTUELLES TESTEN: Ich habe den Prozess und ngentask.exe beendet, bin dann zu Windows\assembly gegangen und habe diese Native Image-Ordner in ein temporäres Verzeichnis verschoben. Ich halte Sie auf dem Laufenden, wenn es wieder startet. Wenn die NativeImages-Ordner fehlen, wird es wahrscheinlich nicht versuchen, diese Assemblys weiterhin zu deinstallieren.

Antwort1

Laden Sie das Easy NGEN-Skript herunter, führen Sie es als Administrator aus und wählen Sie Option 1, um einen vollständigen NGEN-Lauf durchzuführen:

Bildbeschreibung hier eingeben

Dies nimmt viel Zeit in Anspruch und führt alle ausstehenden NGEN-Vorgänge aus. Danach ist die NGEN-Warteschlange leer und Sie sollten die anderen Aufgaben nicht mehr sehen.

(Wenn der Link nicht funktioniert, kopieren Sie den Code, fügen Sie ihn in eine TXT-Datei ein und benennen Sie ihn in „cmd“ um):

@echo off
title Easy Ngen Runner v5 for '.NET 4.x series' by Burf

"%windir%\system32\reg.exe" query "HKU\S-1-5-19" >nul 2>&1 && (
goto :admincheckok
) || (
echo      -------
echo  *** WARNING ***
echo      -------
echo.
echo.
echo ADMINISTRATOR PRIVILEGES NOT DETECTED!
call :line
echo.
echo.
echo This script must be run with administrator privileges!
echo.
echo To do so, right click on this script and select 'Run As Administrator'
echo.
goto :fin
)

:admincheckok

"%windir%\system32\reg.exe" query "hklm\software\microsoft\Windows NT\currentversion" /v buildlabex >"%temp%\os.txt"
find /i "AMD64" <"%temp%\os.txt">nul
if %errorlevel% equ 0 (set arch=x64) else (set arch=x86)

for /f "tokens=3* delims= " %%G in ('reg query "hklm\software\microsoft\Windows NT\currentversion" /v productname') do (set winv=%%G %%H)
echo %winv%|find /i "Windows 10" >nul
if errorlevel 0 (set w10=1&for /f "tokens=3" %%G in ('reg query "hklm\software\microsoft\Windows NT\currentversion" /v UBR') do (set /a UBR=%%G))
if defined w10 (for /f "skip=2 tokens=3,4,6,7 delims=. " %%G in ('type "%temp%\os.txt"') do (set "win=%winv% %arch% Build %%G.%UBR% {%%I %%J}")
) else (
for /f "skip=2 tokens=3,4,6,7 delims=. " %%G in ('type "%temp%\os.txt"') do (set "win=Legacy %winv% %arch% Build %%G.%%H {%%I %%J}")
)
del "%temp%\os.txt"

if not exist "%windir%\Microsoft.NET\Framework\v4.0.30319" goto :notinstalled

:menu
call :title
echo.
echo 1. Run full Ngen 'update' task
echo.
echo 2. Run standard Ngen 'update' task
echo.
echo 3. Execute queued Ngen items (what Windows does in background)
echo.
echo 4. Visit the 'homepage' of Burf:
echo    (http://1drv.ms/1oVTfju)
echo.
echo 5. Information
echo.
echo 6. Exit
echo.
echo. 
echo.
choice /c 123456 /N /M "Please enter your selection> "
if errorlevel 6 goto :eof
if errorlevel 5 goto :info
if errorlevel 4 start http://1drv.ms/1oVTfju&goto :menu
if errorlevel 3 goto :ngub
if errorlevel 2 goto :ngus
if errorlevel 1 goto :nguf


:info
call :title
echo This script allows your to easily run the .NET Framework tool Ngen
echo (Native Image Generator) program.
echo.
echo The three options in the menu represent the three different methods in
echo which is can be run:
echo Menu option 1 - Recreates all images
echo Menu option 2 - Processes images that have become invalid
echo Menu option 3 - Execute items already in queue to be processed by Windows
echo.
echo Option 1 is really only beneficial after a .NET Framework or a major Windows
echo update has been installed. Option 3 executes those items already in the
echo queue, this just processes the items immediately instead of during idle
echo processor time.
echo.
echo Option 2 should be used for general use, option 1 after a .NET Framework
echo or major Windows update (including Insider Previews), and option 3 is
echo only provided for completeness of this script. It is the 'least useful'.
echo.
echo It makes sense to have queued items processed and native images updated
echo before they are actually required!
echo.
echo.
echo Press any key to return to menu...
pause >nul
goto :menu


:nguf
call :title
echo Running x86 update item task. Some 'errors' may show, this is expected.
call :line
echo.
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe" update /force
if defined task (
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngentask.exe" /runtimewide
)
echo.
if %arch% equ x86 (goto :nudone)
echo.
echo Now running x64 update item task. Some 'errors' may show, this is expected.
call :line
echo.
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" update /force
if defined task (
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngentask.exe" /runtimewide
)
goto :nudone


:ngus
call :title
echo Running x86 update item task. Some 'errors' may show, this is expected.
call :line
echo.
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe" update
if defined task (
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngentask.exe" /runtimewide
)


echo.
if %arch% equ x86 (goto :nudone)
echo.
echo Now running x64 update item task. Some 'errors' may show, this is expected.
call :line
echo.
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" update
if defined task (
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngentask.exe" /runtimewide
)
goto :nudone


:ngub
call :title
echo Running x86 update item task. Some 'errors' may show, this is expected.
call :line
echo.
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe" executequeueditems
if defined task (
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngentask.exe" /runtimewide
)


echo.
if %arch% equ x86 (goto :nudone)
echo.
echo Now running x64 update item task. Some 'errors' may show, this is expected.
call :line
echo.
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" executequeueditems
if defined task (
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngentask.exe" /runtimewide
)
goto :nudone


:nudone
echo.
echo.
echo Done! Please note that some 'errors' may have appeared. These are, for the
echo most part, not unexpected and are not deemed critical.
echo.
goto :fin


:title
cls
echo -----------------------------------------
echo Easy Ngen Runner v5 for '.NET 4.x' series by Burf
echo -----------------------------------------
echo %win%
echo.
goto :eof


:fin
echo.
echo Press any key to exit...
pause >nul
goto :eof


:notinstalled
echo Microsoft .NET Framework 4, 4.5, 4.6, or 4.7 NOT detected. Please install before
echo using this script. If already installed, something may be 'wrong'...
goto :fin


:line
echo ____________________________________________________________________________
goto :eof

Antwort2

Das Löschen eines Schlüssels in der Registrierung hat bei mir schließlich funktioniert. Das Problem war, dass ngen immer wieder versuchte, Speicher für dieselbe beschädigte DLL in der Registrierung neu zuzuweisen. Dadurch wurde schließlich der gesamte verfügbare Speicher auf dem Computer verbraucht.

Das Löschen des Schlüssels "\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v2.0.50727\NGenService\Roots" hat bei mir funktioniert. Das Anhalten der geplanten Aufgabe oder das Beenden von ngen.exe ist nur eine vorübergehende Maßnahme und behebt das Problem nicht.

Wie Microsoft ein solches Problem so lange bestehen lassen konnte, ist mir schleierhaft. Heute war der erste Tag, an dem eine Suche für mich eine Antwort ergab.

Weitere Informationen zum Problem finden Sie hierhttps://aloiskraus.wordpress.com/2017/12/13/der-fall-von-ngen-exe-benötigt-50-gb-speicher/

Antwort3

das hat bei mir funktioniert. Ich habe einen Virenscan ausgeführt, nachdem ich alles getan hatte, was die Leute online gesagt haben, und es kam sofort zurück. Es gab einen Virus in Form einer DLL-Datei mit dem Namen .netframework. Es stellte sich heraus, dass es ein CPU-Mining-Virus war. Ich hoffe, das hilft.

verwandte Informationen