我发现System.Windows.Forms.Clipboard中的一个错误,当从Win 7 x64上运行的Forms程序调用Clipboard.Clear()时,它会破坏MS Office应用程序(如Outlook,Access和Excel)。这是一个非常严重的错误,导致MS Office程序损坏其数据库 - 例如outlook.pst - 并停止运行并向用户显示“已停止”消息。
我可以提供一个会持续产生此错误的示例程序。我也有一个简单的解决方法:不要调用System.Windows.Forms.Clipboard。;引用表示核心并替换对System.Windows.Clipboard的调用。。
MS通过COM接口通过非托管代码实现System.Windows.Forms.Clipboard类。他们的Office应用程序显然访问相同的COM对象,这就是腐败的发生方式。