我刚刚升级到 Windows 7,重新安装 MS Office 后,出现了一个有趣的错误。单击数据库时,弹出一条消息“向程序发送命令时出现问题”,但文件应用程序仍会启动,并且会打开正确的数据库。
有人见过这样的事情吗?
我该如何调查并解决这个问题?
笔记: 我没有使用 Zone-Alarm。大多数关于此问题的在线搜索都会返回各种网站和 MSKB 文章,讨论使用 Zone-Alarm 的问题
解决了: 感谢 Mihi --- 将注册表项从 ddexec 重命名为 NOddeexec 后,问题消失了 -- 仍然不确定 DDE 为何会损坏,但现在对我来说已经足够好了
答案1
存在此问题,但仅限于特定的办公产品(即 Excel 和 Word 可以运行,但 Access 会失败并显示消息)。
以下是我在 Windows 7 - 64 位中修复该问题的方法(可能也适用于 Vista)。
笔记:此解决方案涉及编辑系统注册表。请小心,因为错误编辑注册表可能会损坏您的操作系统!
使用 Windows 7 提供的注册表编辑器 (Regedit)
- 检查注册表中扩展项的当前关联
HKEY_CLASSES_ROOT\.mdb
(我正在处理 Office 2007,但只需找到您感兴趣的文件扩展名条目)。- 检查
(Default)
值条目,然后找到其中的键HKEY_CLASSES_ROOT
所指(在我的例子中这是 Access.MDBFile)。 - 找到子项
shell
并将其删除(请参阅上面的警告) - 返回并找到要打开的文件,现在将要求您选择一个程序来打开它。此时,找到要用来打开文件的办公程序,然后就大功告成了。
完成此操作后检查我的设置,发现Access.MDBFile
注册表中的键已更改,它现在有一个CLSID
指向文件关联的新位置的键。
- 子键
CLSID
(就我而言HKEY_CLASSES_ROOT\Access.MDBFile\CLSID
,(Default)
价值是{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
)。 - 使用 find 搜索
CLSID
(不包括花括号),在执行搜索之前,请记住检查Look at
->Keys
(在我的例子中找到了密钥HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
,但这可能有所不同,我的示例是针对 64 位系统处理 32 位版本的 Office 2007)。 - 此引用是指使用进程内服务器启动应用程序的“Microsoft Office Access 应用程序”,使用此方法修复了我的 Access 文件关联。
答案2
基本上,如果文件类型设置为使用 DDE(在同一台计算机上运行的应用程序之间的旧式 Windows-3.x 样式的通信协议)打开文件,就会出现此错误。
您会在资源管理器的文件夹选项中的文件类型中找到它(在 Windows 7 上可能在其他地方,但管理员可以在某个地方设置使用哪些程序打开哪些文件)。
当选中“使用 DDE”选项时,Windows 将首先检查程序是否已在运行,然后(如果已运行)向其发送 DDE 消息(由 3 个文本组成,“应用程序”、“主题”和“消息”)。这样,即使程序已在运行,也可以避免再次打开程序。当程序未运行时,它将正常启动。如果 DDE 连接失败,将出现您提到的对话框,它将再次正常启动程序。
因此,最简单的解决方法就是禁用数据库文件扩展名(我猜是 .mdb)的“使用 DDE”。这样做的唯一缺点是:当您打开数据库并且 Access 已在运行时,Windows 将打开 Access 的第二个实例,该实例将依次注意到第一个实例并发送 DDE 消息,然后退出。也就是说,您不必要地启动 Access,以便它可以立即再次关闭。但现在有了快速的 CPU 和硬盘,我想这是可以接受的 :-)
更复杂的修复方法是检查这些设置中是否有问题(例如错误的主题或错误的应用程序)并进行修复。这样做需要您访问另一台可以打开文件的计算机(可能是虚拟机),以便您可以比较 DDE 配置。
编辑:根据本网站,Vista 中已删除该选项卡。您始终可以在注册表中手动执行此操作:查找HKEY_CLASSES_ROOT\.mdb
其默认值(假设为mdbfile
),然后查看该默认值(HKEY_CLASSES_ROOT\mdbfile\shell\open\ddeexec
)。
答案3
这是我为 Access 2002 找到的解决方案。其他版本的 Access 也类似。
- 开放存取
- 点击工具
- 点击选项
- 点击“高级”选项卡
- 取消选中“忽略 DDE 请求”旁边的复选框
- 关闭访问
它对我有用!不再出现“向程序发送命令时出现问题。”错误。
对于不同版本的 Access,“忽略 DDE 请求”选项的表述可能会略有不同,但您应该能够找到可比较的内容。
我希望这能帮助其他遇到同样问题的人。
答案4
(Excel 打开时出现错误或不显示工作簿)
本文之前发布于 Q211494。