web-dev-qa-db-ja.com

c:/windows/syswow64/msxml4.dllを削除します

プログラムがハードドライブにc:/windows/syswow64/msxml4.dllをインストールしました。残念ながら、これはセキュリティ上の問題がある古いバージョン(4.30.2100.0)であるため、ファイルとそれをインストールしたプログラムを本当に削除したいと思います。

MSXML4は、「プログラムと機能」でアンインストールできるプログラムのリストに含まれていません。 Windows 8.1にインストールしたプログラムを見つける方法はありますか?

あなたの何人かが助けることができることを願っています。

2
Rolf

依存関係を見つける

@DavidMarshallが提案しているように、 Dependency Walker を使用できます。

Dependency Walkerは、32ビットまたは64ビットのWindowsモジュール(exe、dll、ocx、sysなど)をスキャンし、すべての依存モジュールの階層ツリー図を作成する無料のユーティリティです。見つかったモジュールごとに、そのモジュールによってエクスポートされたすべての関数と、それらの関数のどれが実際に他のモジュールによって呼び出されているかが一覧表示されます。

ソース: Dependency Walker(depends.exe)ホームページ

ただし、プログラムが多数ある場合は、それらすべてを実行することは不可能です。別のアプローチは、 高度なコマンドプロンプト を開き、次のコマンドを実行することです。

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"

このコマンドは、システムドライブで使用可能なすべてのアプリケーションとライブラリファイルのコンテンツを再帰的にスキャンして、大文字と小文字を区別せずにmsxml4.dll文字列を探します。

結果は、ユーザーの一時フォルダーにあるfind.txtファイルに保存されます。完璧ではありませんが(以下を参照)、いくつかのヒントが得られる場合があります。

備考

  • findコマンドは、テキストファイル用に設計されています。バイナリファイルでも機能しますが、保存方法によっては特定のインスタンスが見落とされる可能性があります。ファイルのアクセス許可により、特定のファイルもスキャンされない場合があります。

  • システムドライブにインストールされていないプログラムがある場合は、上記のコマンドを再実行して、対応するドライブ文字を指定できます。

  • 次のような他の拡張機能を含めることができます。

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

参考文献

4
and31415

これは、PowerShellでスキャンするために私が思いついたものです。私はPowerShellを初めて使用するので、きれいではないかもしれませんが、機能します。

$hostName     = hostname

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

$scanPath     = 'C:\'

$exefile      = "*.exe"

$dllFile      = "*.dll"

以下は、c $上のすべてのDLLとEXEのリストを作成します。

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

以下では、各ファイルを調べて、MSXML4.dllを参照しているかどうかを確認します。 149GBのデータで約30分かかります。

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

出力はフォーマットされていないため、次のようになります。

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は、スキャンしたすべてのマシンにあり、無視できます。マシン上になくても、MSXML4.dllを探しているだけだと思います。

あなたはまたこのような素晴らしいものを手に入れるでしょう:

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

より良いスキャンは、windows\system32および/またはwindows\syswow64を追加することです。

例えば:

タイプ

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"
0
fellowadmin