最近在我的项目中,当我调用ShowDialogOpenFileDialog方法时,出现此错误:

“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”

我以前一直在网上搜索,但是我的问题没有解决。
我也安装了Microsoft补丁,但是因为我的项目在.Net 3.5中,所以它没有用。

代码样例:

OpenFileDialog OFD = new OpenFileDialog();
OFD.ShowDialog();


谢谢你的帮助。

最佳答案

OpenFileDialog将大量非托管代码加载到您的进程中。您在计算机上安装的所有Shell扩展。其中之一对您的过程环境不太满意,或者对您的过程感到混乱,足以使其崩溃和燃烧。

您需要找到导致这种情况的外壳扩展。从“项目+属性”的“调试”选项卡开始,勾选“启用非托管代码调试”选项。现在,您将在“输出”窗口中看到加载的DLL列表。在您获得例外之前,您看到的最后一个是麻烦制造者,这很合理。尽管您仍然必须将DLL名称反向工程为外壳扩展名。

另一种方法是大刀阔斧。使用SysInternals的AutoRuns实用程序。单击资源管理器选项卡,然后禁用Microsoft所做的所有操作。在superuser.com上询问有关此的更多问题

关于c# - 尝试读取或写入 protected 内存。当我调用openfileDialog的showDialog方法时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8428574/

10-11 21:17