【问题标题】:Word2007: Access Violation Exception was unhandled when execute Selection.Find.ExecuteWord2007:执行 Selection.Find.Execute 时未处理访问冲突异常
【发布时间】:2012-12-07 15:46:47
【问题描述】:

我阅读了很多关于这个可怕而烦人的错误的帖子:“访问冲突异常未处理”。但在 Word2007 上只有一篇文章和提升命令“Selection.Find.Execute”。建议的解决方案是重新安装Word2007,这有点琐碎!

我试图解释我的环境。

我有一个使用 WinForms 用 C# 编写的小应用程序,并通过 InteropServices (word.dll) 调用 Word 在 Word 中创建新文档(引发 Word2007 实例)。所有代码都在 .NET Framework 3.5 上运行。在 C# 代码中,我创建了文档,然后搜索了一些内容来替换它。

该程序仅在某些机器上引发引用的错误,而在其他机器上它正确运行。

这是sn-p代码:

WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
WordApp.Visible = false;
...
this.copDoc = WordApp.Documents.Add(ref template,
                                            ref missing,
                                            ref missing,
                                            ref isVisible);

                this.copDoc.Activate();
...
WordApp.Selection.Find.Execute(ref textData, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

if (WordApp.Selection.Find.Found)
{
    Range r = WordApp.Selection.Range;
    r.Text = DateTime.Today.ToLongDateString();
}
...

当代码执行粗体行时,它会引发“访问冲突”异常,并显示消息“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”。如果我评论此代码,则文档已创建,这可能意味着异常与整个 Word 无关,而仅与其中的某些特定配置有关。

这是一个例外:

'EdAg.exe': Loaded 'C:\Windows\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll', Binary was not built with debug information.
'EdAg.exe' (Managed): Loaded 'C:\Windows\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll'
First-chance exception at 0x45c7a6f3 in EdAg.exe: 0xC0000005: Access violation.
First-chance exception at 0x6b815095 in EdAg.exe: 0xC0000005: Access violation reading location 0x45c7a6f3.
First-chance exception at 0x6b815095 in EdAg.exe: 0xC0000005: Access violation reading location 0x45c7a6f3.

有人可以建议我一种更合理的方法来代替重新安装 Word 2007 吗?

【问题讨论】:

    标签: c# ms-word access-violation


    【解决方案1】:

    出现异常的机器上的问题是一致的还是间歇性的?

    如果一致,我不知道解决方案,但首先检查这些机器是否已关闭 UAC(即,添加到 Vista 中的东西会在它认为某些东西试图更改您的 PC 时提示您)(或与工作人员相反)。

    与此相关,在使用 COM 时,当尝试从非特权应用程序与特权应用程序对话时(例如,启动“以管理员身份”),您可能会遇到这样的安全访问冲突。例如,如果有人以管理员身份启动您的应用程序(甚至可能从 VS 以管理员身份运行),并且 Word 已经以非管理员身份运行,那么 Windows 将无法启动另一个 Word 实例,并且不会让两者交谈,所以 COM 会失败。

    【讨论】:

    • 您的解决方案很有趣,但现在我已经解决了修复 Word 2007 安装的问题。我会在未来得到你告诉我的解决方案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多