找不到 c:\windows\system32\mfc100d.dll
Posted
技术标签:
【中文标题】找不到 c:\\windows\\system32\\mfc100d.dll【英文标题】:Unable to find c:\windows\system32\mfc100d.dll找不到 c:\windows\system32\mfc100d.dll 【发布时间】:2015-03-19 03:32:44 【问题描述】:我有一个很奇怪的问题。
我正在尝试运行我使用 VS2010 构建的控制台应用程序并收到错误 mfc100d.dll
未找到。但是这个dll存在于c:\windows\system32
中,我的路径是c:\windows\system32
如果我将文件从c:\windows\system32
复制到我的当前目录,它可以工作。
如果我将C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC100.DebugMFC\
添加到我的路径中,它也可以工作。
在我昨天卸载程序并安装新版本之前,一切正常。但我无法理解的是,当mfc100d.dll
确实存在于C:\windows\system32
路径中时,为什么会出现错误。
而且,是的,我确实有权读取该文件,我还能如何复制它...
【问题讨论】:
【参考方案1】:在 64 位 Windows 上运行的 32 位应用程序中,访问 System32
目录会被重定向到 SysWOW64
目录。以 32 位 Python 的输出为例:
>>> import os
>>> print(os.path._getfinalpathname(r'C:\Windows\System32\mfc100d.dll'))
\\?\C:\Windows\SysWOW64\mfc100d.dll
请记住,由于 WOW64 和 UAC,文件系统和注册表路径都可能会被重定向,因此您并不总是完全得到您所要求的!如果由于某种原因您最终通过 SysWOW64\cmd.exe
运行 32 位命令提示符,这可能会让您措手不及,特别是如果您最终在同一个控制台窗口中混合运行 32 位和 64 位应用程序。
【讨论】:
谢谢,设置了路径但找不到 dll 真是令人费解。我不知道 32 位 dll 在 64 位系统上的不同行为。【参考方案2】:如果你卸载了某些东西,你的环境变量可能被重置了。你检查了吗?
【讨论】:
我的路径已设置并包含C:\Windows\System32
。还有哪些变量可能与此相关?【参考方案3】:
尝试检查您的PATH
,查看搜索路径中是否存在多个mfc100d.dll,其中一个已损坏。 (可能由于卸载)
【讨论】:
我已将路径设置为C:\Windows\System32
,mfc100d.dll 存在于该文件夹中。但是,我仍然收到错误消息。该文件与 Visual Studio 文件夹中的文件相同,我使用 FC /b
进行了比较
@uncletall 尝试使用icacls /reset
重置文件权限。另外,检查你没有拼错路径。然后重新启动并确保您的设置实际发生(例如,使用 cmd 命令path
并检查其输出)【参考方案4】:
使用 Dependency Walker 检查该控制台应用程序尝试从何处获取该 mfc100d.dll 文件。然后将 mfc100d.dll 放到它试图获取它的路径中。
【讨论】:
以上是关于找不到 c:\windows\system32\mfc100d.dll的主要内容,如果未能解决你的问题,请参考以下文章