如何从SxS缓存中删除已卸载的DLL

时间:2011-08-05 18:10:54

标签: windows side-by-side winsxs sxs

我有VS 2008.我升级到VS 2010,并卸载了VS 2008。

我有一个在我的机器上运行的测试,但无法在构建实验室的机器上加载。经过一些调试,我意识到测试可执行文件仍然依赖于msvcr90d.dll(这是一个VC ++ 2008调试运行时库)。即使我已经卸载了VS 2008,测试也可以在我的机器上运行,因为运行时DLL仍然存在于并排缓存中(%windir%/ winsxs)。构建实验室机器没有DLL,因此它不会在那里加载。

不应该卸载VS 2008导致所有运行时DLL从并行缓存中删除吗?

有没有办法可以从并行缓存中手动删除这些旧的DLL?我希望能够轻松地检测到我可能仍然存在过时依赖性的其他地方。

1 个答案:

答案 0 :(得分:2)

首先需要获取包含文件夹的所有权。其中的所有文件夹都将由SYSTEM或TrustedInstaller拥有。所以这样做:

右键单击 - &gt;属性 - &gt;安全性选项卡 - &gt;高级 - &gt;所有者标签 - &gt;编辑 - &gt;选择自己为所有者 - &gt;勾选'替换子容器和对象上的所有者 - &gt;确定< / p>

完成后,您可以执行右键单击 - &gt;属性 - &gt;安全性标签 - &gt;给自己完全控制 - &gt;确定

或者,如果您熟悉cacls命令,则可以从命令行执行此操作。

一旦你完全掌控,你就可以移动文件夹了,我强烈推荐删除它。从winsxs删除文件可能会破坏其他应用程序甚至Windows。

相关问题