最近,我无法下载文件,因为“另存为”按钮没有任何作用。现在,我注意到我甚至无法从 MS Paint 保存任何内容,因为“另存为”按钮也没有任何作用,我也无法打开任何内容。似乎指定这些对话框的窗口组件已丢失(但我没有收到任何错误),或被一个不执行任何操作的组件替换。我该如何修复此问题?这是一个已知问题吗?提前致谢。
答案1
分析
处理这些的 Windows API 函数对话框位于comdlg32.dll
库文件中,通常位于C:\Windows\System32
:
通用对话框库包含一组用于执行常见应用程序任务的对话框,例如打开文件、选择颜色值和打印文档。
来源:通用对话框库
在这种情况下,该文件被适用于 Windows 9x 的旧版本替换:
Size: 176128 bytes
Version: 4.72.3510.2300
作为比较,以下是与 Windows XP SP3 捆绑的原始文件:
Size: 276992 bytes
Version: 6.00.2900.5512
这个问题被称为DLL 破坏,通常发生在程序用较早的不兼容版本覆盖系统库时。notepad
快速运行证实了这一点:
无法在动态链接库 comdlg32.dll 中找到程序输入点 PrintDlgExW。
解决
您可以通过运行该命令来执行系统检查sfc /scannow
。如果任何系统文件丢失或损坏,程序将尝试恢复它。必要时,系统将提示您插入 Windows XP 安装 CD。
笔记此过程需要管理员权限。
解决方法
如果您可以访问 Windows XP SP3 安装媒体,则可以通过复制文件夹COMDLG32.DL_
内的文件来获取原始文件I386
。然后,您必须通过从命令提示符运行以下命令来解压缩它:
cd /d "X:\Folder\containing\COMDLG32.DL_"
expand COMDLG32.DL_ comdlg32.dll
此时,您可以启动任何 Linux 实时 CD/DVD/USB,然后手动comdlg32.dll
用正确的文件替换旧文件。