问题如题目描述,使用安装包修复/重新安装未果,于是想到为他提供他需要的dll文件来解决问题。
下载一份新的dlmgr.dll文件,复制dll文件到相应的目录里,这里有一点需要注意,64位系统需要注意,system32复制的是64位的dll文件。
我的电脑是64位,但是只找到了一份dlmgr.dll文件。因此,我在C:\Windows\System32和C:\Windows\SysWOW64下都放了一份。终于解决了这个问题。
即:
64位系统:
复制x64的dll文件到C:\Windows\System32
复制x86的dll文件到C:\Windows\SysWOW64
32位系统:
复制x86的dll到C:\Windows\System32
解释如下
如果查看32位操作系统内的/Windows文件夹,会发现两个子目录:一个是System,还有一个是System32。System目录是Windows 3.x遗留下来,用来保持Windows的对一些旧的应用程序的向下兼容性。一般来说,16位的DLL文件(以及其它的支持文件)被存放在\Windows\System文件夹里,32位的DLL文件和不同支持文件被放在\Windows\System32的文件夹里。
32位版本的Windows保持16位和32位DLL文件的方式是非常简单的,但是64位版本的Windows保持64位和32位DLL文件的方式就不这么简单了。
对于一个64位系统,微软创建了一个新的名为SysWOW64的文件夹来存放32位的DLL文件。在64位版本的Windows内,微软使用\Windows\System32文件夹做为64位DLL的仓库,而不是32位DLL文件的。
32位代码不能默认在64位版本的Windows内运行。为了运行32位的应用程序,Windows使用WOW64 emulator,来让这些应用程序还认为它们在32位版本的Windows内运行。 当你安装一个32位的应用程序,安装向导通过WOW64 emulato运行。这意味着当你安装一个应用程序,安装向导并不知道这个程序被安装到64位版本的Windows内,并且和它运行在32位操作系统一样把DLL文件写到\Windows\System32文件夹里面。当然,WOW64知道安装向导通过emulator来运行的32位应用程序。同时也知道64和32位代码不能混合在一起。所以,WOW64 emulator 给\Windows\SysWOW64创建一个别名。这意味着32位应用程序要写入到\Windows\System32文件夹或者从\Windows\System32文件夹读取,WOW64 emulator都能使其改道到\Windows\SysWOW64文件夹。
当然,可以使用函数禁止重定向:Wow64DisableWow64FsRedirection
或恢复重定向:Wow64RevertWow64FsRedirection
解释部分转自此处