Entfernen Sie c: /windows/syswow64/msxml4.dll

12442
Rolf

C: /windows/syswow64/msxml4.dll wurde von einem Programm auf meiner Festplatte installiert. Leider ist dies eine alte Version (4.30.2100.0) mit einem Sicherheitsproblem, daher möchte ich die Datei und das Programm, das sie installiert hat, wirklich entfernen.

MSXML4 ist nicht in der Liste der Programme enthalten, die unter "Programme und Funktionen" deinstalliert werden können. Gibt es eine Möglichkeit, das Programm zu finden, mit dem es in Windows 8.1 installiert wurde?

Hoffe, dass einige von euch helfen können.

2
Warum versuchen Sie überhaupt, eine Systemdatei zu entfernen? Gibt es dafür einen bestimmten Grund? Vinayak vor 10 Jahren 0
Die jeweilige Version enthält ein Sicherheitsproblem, das ich gerne beheben möchte. Windows Update schlägt nichts vor. Rolf vor 10 Jahren 1
Was ist die neue Version? Haben Sie einen Link zu einem Technet-Memo zur Sicherheitsfrage? dsolimano vor 10 Jahren 0
Ich habe festgestellt, dass dieses Windows 8-Update für XML Core Services von https://technet.microsoft.com/library/security/ms13-jan beim Upgrade der Version auf 4.30.2117.0 hilft. Viel besser. Rolf vor 10 Jahren 0
Dies ist die neueste Version, aber MSXML 4.0 SP3 wurde seit April 2014 nicht mehr unterstützt, daher werden keine Sicherheitsupdates mehr verfügbar sein. http://support.microsoft.com/gp/msxmlannounce David Marshall vor 10 Jahren 3
@ DavidMarshall: OK. In diesem Fall wäre es dennoch gut zu wissen, in welchem ​​Programm die Datei installiert ist, sodass ich das Programm deinstallieren und dem Hersteller mitteilen kann, dass Komponenten mit Sicherheitsfehlern verteilt werden. Rolf vor 10 Jahren 1
Leider weiß ich keine einfache Möglichkeit, dies zu tun, außer msxml4.dll umzubenennen und darauf zu warten, dass etwas fehlschlägt. David Marshall vor 10 Jahren 0
Ich hatte gehofft, dass die Registry Abhängigkeitsinformationen zwischen Dateien und installierten Produkten enthielt. Rolf vor 10 Jahren 0
Nein. Sie können ein Programm wie Dependency Walker http://www.dependencywalker.com/ für Anwendungen von Drittanbietern ausführen, wenn Sie nicht zu viele haben. David Marshall vor 10 Jahren 2
@Rolf Was das wert ist, ist die Version 4.30.2117.0 als Teil des Updates [KB2758694] (http://www.microsoft.com/en-us/download/details.aspx?id=36273). Hast du das installiert? and31415 vor 10 Jahren 0
@ and31415 Ja, ich habe es gestern installiert, um die Sicherheitsprobleme in Version 4.30.2100.0 zu beheben. Durch die Deinstallation des Updates wird die Datei nicht entfernt. Rolf vor 10 Jahren 0
@DavidMarshall Gute Idee zur Verwendung des Abhängigkeitswandlers. Ich habe nur zu viele Anwendungen installiert, um sie alle zu durchlaufen. Rolf vor 10 Jahren 0
Öffnen Sie eine Eingabeaufforderung als Administrator und führen Sie den folgenden Befehl aus: `for / r" c: \ "% G in (* .exe; *. Dll) do @find / i" msxml4.dll ""% ~ fG "> nul 2> & 1 && echo% ~ fG >> "c: \ find.txt" `Es ist nicht perfekt; Bestimmte Fälle könnten übersehen werden, aber es können einige Hinweise gegeben werden. and31415 vor 10 Jahren 0
@ and31415: Interessanter Ansatz. Es scheint, dass ich sehr wenige Abhängigkeiten habe. Vielen Dank! Geben Sie es als Antwort an, wenn Sie möchten, und ich markiere es als gelöst. Rolf vor 10 Jahren 0

3 Antworten auf die Frage

3
and31415

Abhängigkeiten finden

Wie von @DavidMarshall vorgeschlagen, können Sie Dependency Walker verwenden :

Dependency Walker ist ein kostenloses Dienstprogramm, das jedes 32-Bit- oder 64-Bit-Windows-Modul (exe, dll, ocx, sys usw.) durchsucht und ein hierarchisches Baumdiagramm aller abhängigen Module erstellt. Für jedes gefundene Modul werden alle Funktionen aufgelistet, die von diesem Modul exportiert werden und welche dieser Funktionen tatsächlich von anderen Modulen aufgerufen werden.

Quelle: Homepage von Dependency Walker (depend.exe)

Wenn Sie jedoch über viele Programme verfügen, ist das Durchlaufen aller Programme nicht durchführbar. Ein anderer Ansatz besteht darin, eine Eingabeaufforderung mit erhöhten Rechten zu öffnen und den folgenden Befehl auszuführen:

type nul>"%temp%\find.txt" & for /r "%systemdrive%\" %G in (*.exe;*.dll) do @find /i "msxml4.dll" "%~fG" >nul 2>&1 && echo %~fG>>"%temp%\find.txt" 

Mit dem Befehl wird rekursiv der Inhalt jeder auf dem Systemlaufwerk verfügbaren Anwendungs- und Bibliotheksdatei nach msxml4.dllZeichenfolgen durchsucht, wobei die Groß- und Kleinschreibung nicht beachtet wird.

Die Ergebnisse werden in einer find.txtDatei gespeichert, die sich im temporären Ordner des Benutzers befindet. Es ist nicht perfekt (siehe unten), kann aber einige Hinweise geben.

Bemerkungen

  • Der findBefehl ist für Textdateien konzipiert. Es funktioniert zwar auch für Binärdateien, jedoch können bestimmte Instanzen je nach ihrer Speicherung übersehen werden. Dateiberechtigungen verhindern möglicherweise auch das Durchsuchen bestimmter Dateien.

  • Wenn Sie über Programme verfügen, die nicht im Systemlaufwerk installiert sind, können Sie den obigen Befehl erneut ausführen und den entsprechenden Laufwerksbuchstaben angeben.

  • Sie können andere Erweiterungen hinzufügen, z.

    .cpl = Control panel item .ocx = ActiveX control .scr = Screen saver .sys = System file (e.g. device drivers) 

Lesen Sie weiter

2
Robert S

Dies ist, was ich zum Scannen mit Powershell hatte. Ich bin neu bei Powershell, also ist es vielleicht nicht hübsch, aber es funktioniert.

$hostName = hostname  $appFilePath = "C:\Windows\Temp\DLL_$hostName.csv"  $scanPath = 'C:\'  $exefile = "*.exe"  $dllFile = "*.dll" 

Die folgende Liste erstellt eine Liste aller DLLs und EXEs unter c $:

$dll = dir -ErrorAction SilentlyContinue -Recurse -Path $scanPath -Include @($exefile, $dllFile) 

Im Folgenden wird jede Datei untersucht, um zu sehen, ob sie auf MSXML4.dll verweist. Es dauert ungefähr 30 Minuten für meine 149 GB Daten:

$dll | Select-String "msxml4.dll" -ErrorAction SilentlyContinue | group $($_.name) | select name | export-csv -path $appFilePath` 

Die Ausgabe ist nicht formatiert, sodass Sie Folgendes erhalten:

C:\Windows\SysWOW64\migwiz\unbcl.dll:45:Cclass UnBCL::TimeSpan __thiscall UnBCL::TimeSpan::Add(const class UnBCL::TimeSpan &) constresult of TimeSpan additio..... and so on 

unbcl.dll ist auf jedem Rechner, den ich gescannt habe, und kann ignoriert werden. Ich denke, es sucht nur nach MSXML4.dll, auch wenn es nicht auf der Maschine ist.

Sie erhalten auch tolle Sachen wie diese:

"C:\Users\USERX\Documents\Toad for Oracle 10.1 - R2 Commercial.exe:5045:File_Name=""msxml4.dll"" " 
0
fellowadmin

Ein besserer Scan wäre das Hinzufügen von Windows \ System32 und / oder Windows \ Syswow64

Zum Beispiel:

Art

nul>"%temp%\find.txt" & for /r "%systemdrive%\windows\syswow64" %G in (*.exe;*.dll) do @find /i "msxml4.dll" "%~fG" >nul 2>&1 && echo %~fG>>"%temp%\find.txt" 
Was macht das? Was können sie tun, nachdem das Problem behoben wurde? Canadian Luke vor 10 Jahren 0
Es hilft nur bei der Identifizierung der Anwendungen, die noch msxml4.dll verwenden. Sie haben dann die Wahl, die Anwendung zu deinstallieren, oder bitten Sie den Hersteller, sein Produkt zu aktualisieren, um eine neuere Version zu verwenden. Rolf vor 10 Jahren 0
Das Scannen von% ProgramFiles% und% ProgramFiles (x86)% kann in diesem Fall nützlicher sein. David Marshall vor 10 Jahren 0