Как удалить удаленную DLL из кеша SxS

У меня был VS 2008. Я обновился до VS 2010 и удалил VS 2008.

У меня есть тест, который выполняется на моей машине, но не загружается на машины в лаборатории сборки. После некоторой отладки я понял, что исполняемый файл теста по-прежнему зависит от msvcr90d.dll (которая является библиотекой времени выполнения отладки VC ++ 2008). Несмотря на то, что я удалил VS 2008, тест работает на моем компьютере, потому что эта библиотека времени выполнения все еще существует в параллельном кеше (% windir% / winsxs). На машине лаборатории сборки нет библиотеки DLL, поэтому она не загружается.

Разве удаление VS 2008 не должно было привести к удалению всех динамических библиотек DLL из параллельного кеша?

Есть ли способ вручную удалить эти старые библиотеки DLL из параллельного кеша? Я хотел бы иметь возможность легко обнаруживать другие места, где у меня все еще может быть устаревшая зависимость.


person Adrian McCarthy    schedule 05.08.2011    source источник
comment
@Hans Passant: Даже после повышения до администратора я получаю диалоговое окно, в котором говорится, что я не могу удалить системные файлы. Вам необходимо разрешение для выполнения этого действия [.] Вам требуется разрешение от SYSTEM, чтобы вносить изменения в этот файл [.]   -  person Adrian McCarthy    schedule 06.08.2011
comment
Подождите, какой точный файл вы пытаетесь удалить. Разместите полный путь.   -  person Hans Passant    schedule 06.08.2011
comment
@Hans: Просто удалить из winsxs было бы плохой идеей.   -  person Carey Gregory    schedule 06.08.2011
comment
Точный путь: C: \ Windows \ winsxs \ x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb \ msvcr90d.dll   -  person Adrian McCarthy    schedule 06.08.2011
comment
Вы, кажется, отстаиваете курс, который означает, что приложение никуда не запускается. Обязательно нужно исправить зависимость.   -  person David Heffernan    schedule 06.08.2011
comment
@ Дэвид: Я исправил зависимость. Я хочу сказать, что я хочу иметь возможность обнаруживать другие плохие зависимости на своей машине. Я хочу, чтобы любое приложение, которое все еще имеет эту зависимость, отказывалось, чтобы я знал об этом и мог ее исправить.   -  person Adrian McCarthy    schedule 11.08.2011


Ответы (1)


Сначала вам нужно стать владельцем папки, в которой она находится. Все папки там будут принадлежать SYSTEM или TrustedInstaller. Итак, сделайте это:

Щелкните правой кнопкой мыши-> Свойства-> вкладка Безопасность-> Дополнительно-> вкладка Владелец-> Правка-> Выберите себя как владельца-> отметьте 'Заменить владельца на подконтейнерах и объектах-> ОК

Как только вы это сделаете, вы можете щелкнуть правой кнопкой мыши-> Свойства-> вкладка Безопасность-> Предоставить себе полный контроль-> ОК.

Или, если вы знакомы с командой cacls, вы можете сделать это из командной строки.

Получив полный контроль, вы можете переместить папку, что я настоятельно рекомендую не удалять. Удаление файлов из winsxs может привести к поломке других приложений или даже Windows.

person Carey Gregory    schedule 05.08.2011