Удалить c: /windows/syswow64/msxml4.dll

12381
Rolf

Программа установила c: /windows/syswow64/msxml4.dll на мой жесткий диск. К сожалению, это старая версия (4.30.2100.0) с проблемой безопасности, поэтому я действительно хочу удалить файл и программу, которая его установила.

MSXML4 нет в списке программ, которые я могу удалить в разделе «Программы и компоненты». Есть ли способ найти программу, которая установила его в Windows 8.1?

Надеюсь, что некоторые из вас могут помочь.

2
Прежде всего, почему вы даже пытаетесь удалить системный файл? Есть ли конкретная причина для этого? Vinayak 10 лет назад 0
Конкретная версия содержит проблему безопасности, которую я хотел бы исправить. Обновление Windows ничего не предлагает. Rolf 10 лет назад 1
Какая новая версия? У вас есть ссылка на заметку Technet по вопросу безопасности? dsolimano 10 лет назад 0
Я обнаружил, что это обновление Windows 8 для XML Core Services от https://technet.microsoft.com/library/security/ms13-jan помогает обновить версию до 4.30.2117.0. Намного лучше. Rolf 10 лет назад 0
Это последняя версия, но MSXML 4.0 SP3 не поддерживается с апреля 2014 года, поэтому обновлений безопасности больше не будет. http://support.microsoft.com/gp/msxmlannounce David Marshall 10 лет назад 3
@DavidMarshall: хорошо. Но в этом случае было бы хорошо узнать, какая программа установила файл, чтобы я мог удалить программу и сообщить поставщику, что они распространяют компоненты с недостатками безопасности. Rolf 10 лет назад 1
К сожалению, я не знаю простого способа сделать это, кроме как переименовать msxml4.dll и ждать, пока что-то не получится. David Marshall 10 лет назад 0
Я надеялся, что реестр содержит информацию о зависимости между файлами и установленными продуктами. Rolf 10 лет назад 0
Нет. Вы можете запустить такую ​​программу, как Dependency Walker, http://www.dependencywalker.com/ против сторонних приложений, если у вас их не слишком много. David Marshall 10 лет назад 2
@Rolf Для чего стоит, версия `4.30.2117.0` доступна как часть обновления [KB2758694] (http://www.microsoft.com/en-us/download/details.aspx?id=36273). У вас это установлено? and31415 10 лет назад 0
@ and31415 Да, я установил его вчера, чтобы устранить проблемы безопасности в версии 4.30.2100.0. Удаление обновления не удаляет файл. Rolf 10 лет назад 0
@DavidMarshall Хорошая идея использовать зависимостей. Мне просто нужно установить много приложений, чтобы пройти их все. Rolf 10 лет назад 0
Откройте командную строку от имени администратора и выполните следующую команду: `for / r" c: \ "% G in (* .exe; *. Dll) do @find / i" msxml4.dll ""% ~ fG "> nul 2> & 1 && echo% ~ fG >> "c: \ find.txt" `Это не идеально; некоторые случаи могут быть пропущены, но это может дать вам несколько советов. and31415 10 лет назад 0
@ and31415: интересный подход. Кажется, у меня очень мало зависимостей. Большое спасибо! Предоставьте это как ответ, если хотите, и я отмечу это как решенное. Rolf 10 лет назад 0

3 ответа на вопрос

3
and31415

Finding dependencies

As suggested by @DavidMarshall, you could use Dependency Walker:

Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, it lists all the functions that are exported by that module, and which of those functions are actually being called by other modules.

Source: Dependency Walker (depends.exe) Home Page

If you have many programs, however, going through all of them is unfeasible. A different approach is to open an elevated command prompt, and run the following command:

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" 

What the command does is to recursively scan the content of every application and library file available in the system drive looking for msxml4.dll strings, in a case-insensitive way.

The results are stored in a find.txt file located in the user temporary folder. It's not perfect (see below), but it might give you some hints.

Remarks

  • The find command is designed for text files. While it also works for binary files, certain instances could be overlooked depending how they're stored. File permissions might prevent certain files from being scanned, too.

  • In case you have programs which aren't installed in the system drive you can re-run the command above and specify the corresponding drive letter.

  • You could include other extensions, such as:

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

Further reading

2
Robert S

Это то, что я придумал для сканирования с помощью powershell. Я новичок в powershell, так что это может быть не красиво, но это работает.

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

Следующее создает список всех DLL и EXE-файлов на c $:

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

Далее рассматривается каждый файл, чтобы увидеть, ссылается ли он на MSXML4.dll. Занимает около 30 минут на моих 149 ГБ данных:

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

Лучше было бы добавить 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" 
Что это делает? Что они могут сделать после этого, чтобы решить проблему? Canadian Luke 10 лет назад 0
Это просто помогает определить приложения, которые все еще используют msxml4.dll. Затем вы можете удалить приложение или попросить поставщика обновить его продукт, чтобы использовать более позднюю версию. Rolf 10 лет назад 0
Сканирование% ProgramFiles% и% ProgramFiles (x86)% может быть более полезным в этом случае. David Marshall 10 лет назад 0