为什么 Access 报告其程序无法接收命令?

为什么 Access 报告其程序无法接收命令?

我刚刚升级到 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 也类似。

  1. 开放存取
  2. 点击工具
  3. 点击选项
  4. 点击“高级”选项卡
  5. 取消选中“忽略 DDE 请求”旁边的复选框
  6. 关闭访问

它对我有用!不再出现“向程序发送命令时出现问题。”错误。

对于不同版本的 Access,“忽略 DDE 请求”选项的表述可能会略有不同,但您应该能够找到可比较的内容。

我希望这能帮助其他遇到同样问题的人。

答案4

从 MS 修复它 — 向程序发送命令时出现问题。

(Excel 打开时出现错误或不显示工作簿)
本文之前发布于 Q211494。

相关内容