尝试读/写受保护的内存

时间:2009-08-07 03:37:06

标签: .net

我的Windows应用程序使用用户控件和一个DLL加载4件。其中一个电脑弹出“尝试读/写受保护的内存”。请给我建议。

Windows窗体仅用作背景。用户控件加载在此win表单上,并在引用中添加一个dll。

3 个答案:

答案 0 :(得分:3)

我不认为这与用户权限有任何关系,正如其他人所说的那样。

我在使用C#中的不安全指针之前经历过这种情况。这是当您尝试在另一个程序的内存上写入时出现的错误。

您可能尝试执行的操作(除了将调试版本部署到测试计算机之外)是从Visual Studio中打开AccessViolationException。你可以通过调试>来做到这一点。例外>公共语言运行时异常>系统。选中System.AccessViolationException旁边的复选框。如果你很幸运,你会看到错误发生的地方。

修改

此外,我发现这篇较旧的帖子中另一张海报有类似的问题: Attempted to read or write protected memory

答案 1 :(得分:1)

我在应用程序中收到完全相同的消息,并且很难解决它。我已经搜索了该消息并找到了许多不同的原因和解决方案......它们都没有为我工作。

嗯,就我而言,我在我的.NET应用程序中使用了COM对象....并且该错误会在代码的不同部分中随机出现。最后,经过大量的时间调试后,我发现以下行导致了错误:

arr = doc.GetAllExternalReferences3(objOptions, objRefVar, objIsVirtual)

objRef和objIsVirtual是byref参数。我不是Interop专家,但似乎从.NET中的原始类型(在COM中)到“对象”的转换不能很好地工作,特别是当这些对象的范围完成时。无论如何,我不需要这些值,并且有一个不需要这些参数的重载方法。所以我很幸运,不需要深入了解COM互操作细节。无论如何,我了解到必须非常小心COM对象返回.NET ....

不确定您是否属于这种情况。但也许这个anwer可以帮助其他人搜索这个消息。

答案 2 :(得分:0)

没有太多可以继续使用一台PC上的用户权限不同?