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

2

Ein Programm hat c: /windows/syswow64/msxml4.dll 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, unbedingt entfernen.

MSXML4 befindet sich nicht in der Liste der Programme, die ich unter "Programme und Funktionen" deinstallieren kann. Gibt es eine Möglichkeit, das Programm zu finden, das es in Windows 8.1 installiert hat?

Hoffe, einige von euch können helfen.

Rolf
quelle
Warum versuchen Sie überhaupt, eine Systemdatei zu entfernen? Gibt es dafür einen bestimmten Grund?
Vinayak
1
Die jeweilige Version enthält ein Sicherheitsproblem, das ich beheben möchte. Windows Update schlägt nichts vor.
Rolf
3
Dies ist die neueste Version, MSXML 4.0 SP3 wird jedoch seit April 2014 nicht mehr unterstützt, sodass keine Sicherheitsupdates mehr verfügbar sind. support.microsoft.com/gp/msxmlannounce
David Marshall
1
@ David Marshall: OK. Aber in diesem Fall wäre es immer noch gut zu wissen, welches Programm die Datei installiert hat, damit ich das Programm deinstallieren und dem Hersteller mitteilen kann, dass sie Komponenten mit Sicherheitslücken verteilen.
Rolf
2
Nein. Sie können ein Programm wie Dependency Walker dependencywalker.com für Anwendungen von Drittanbietern ausführen, wenn Sie nicht über zu viele verfügen.
David Marshall

Antworten:

4

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 (dependant.exe)

Wenn Sie jedoch viele Programme haben, ist es nicht möglich, alle durchzuarbeiten. 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 diesem Befehl wird der Inhalt aller auf dem Systemlaufwerk verfügbaren Anwendungs- und Bibliotheksdateien rekursiv nach msxml4.dllZeichenfolgen durchsucht, wobei die Groß- und Kleinschreibung nicht berücksichtigt wird .

Die Ergebnisse werden in einer find.txtDatei im temporären Benutzerordner gespeichert . Es ist nicht perfekt (siehe unten), aber es könnte Ihnen einige Hinweise geben.

Bemerkungen

  • Der findBefehl ist für Textdateien vorgesehen. Obwohl dies auch für Binärdateien funktioniert, können bestimmte Instanzen übersehen werden, je nachdem, wie sie gespeichert sind. Dateiberechtigungen verhindern möglicherweise auch, dass bestimmte Dateien gescannt werden.

  • Falls Sie Programme haben, die nicht auf dem Systemlaufwerk installiert sind, können Sie den obigen Befehl erneut ausführen und den entsprechenden Laufwerksbuchstaben angeben.

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

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

Weitere Lektüre

und31415
quelle
2

Das habe ich mir ausgedacht, um mit Powershell zu scannen. Ich bin neu in Powershell, also ist es vielleicht nicht schön, aber es funktioniert.

$hostName     = hostname

$appFilePath  = "C:\Windows\Temp\DLL_$hostName.csv"

$scanPath     = 'C:\'

$exefile      = "*.exe"

$dllFile      = "*.dll"

Das Folgende erstellt eine Liste aller DLLs und EXEs auf c $:

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

Im Folgenden wird in jeder Datei geprüft, ob sie auf MSXML4.dll verweist. Nimmt ungefähr 30 Minuten mit meinen 149 GB Daten auf:

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

Die Ausgabe ist nicht formatiert, daher erhalten Sie Folgendes:

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 

Die Datei unbcl.dll befindet sich auf jedem Computer, den ich gescannt habe, und kann ignoriert werden. Ich denke, es ist nur auf der Suche nach MSXML4.dll, auch wenn es nicht auf dem Computer ist.

Sie werden auch so tolle Sachen bekommen:

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

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"
Fellowadmin
quelle
Was macht das? Was können sie danach tun, um das Problem zu beheben?
Kanadischer Luke
Es hilft nur, die Anwendungen zu identifizieren, die noch msxml4.dll verwenden. Anschließend können Sie die Anwendung deinstallieren oder den Hersteller bitten, sein Produkt für die Verwendung einer späteren Version zu aktualisieren.
Rolf
Das Scannen von% ProgramFiles% und% ProgramFiles (x86)% ist in diesem Fall möglicherweise nützlicher.
David Marshall