Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SaveFileDialog崩溃,异常代码为0xc0000005_C#_.net_Access Violation_Openfiledialog_Savefiledialog - Fatal编程技术网

C# SaveFileDialog崩溃,异常代码为0xc0000005

C# SaveFileDialog崩溃,异常代码为0xc0000005,c#,.net,access-violation,openfiledialog,savefiledialog,C#,.net,Access Violation,Openfiledialog,Savefiledialog,我对C#中的应用程序有问题。当我尝试在SaveFileDialog对象上调用ShowDialog时,应用程序崩溃。 导致崩溃的代码位于try-catch块中,但由于它破坏了应用程序,我无法获取堆栈跟踪 try { SaveFileDialog sfd = new SaveFileDialog(); sfd.AddExtension = true; sfd.RestoreDirectory = true;

我对C#中的应用程序有问题。当我尝试在SaveFileDialog对象上调用ShowDialog时,应用程序崩溃。 导致崩溃的代码位于try-catch块中,但由于它破坏了应用程序,我无法获取堆栈跟踪

 try
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.AddExtension = true;
            sfd.RestoreDirectory = true;
            string ext = Path.GetExtension(this.title);
            sfd.Filter = "File type (" + ext + ")|*" + ext;
            sfd.FileName = Program.NormalizeTitle(this.title);

            DialogResult ds = sfd.ShowDialog(this);

        }
        catch (Exception ex)
        {
             MessageBox.Show("Exception: " + ex.StackTrace);
        }
以下是错误描述:

Faulting application name: test.exe, version: 1.0.0.1, time stamp: 0x56585459
Faulting module name: wkscli.dll, version: 6.1.7601.17514, time stamp: 0x4ce795a7 
Exception code: 0xc0000005 
Fault offset: 0x00001e8f 
Faulting process id: 0x%9 
Faulting application start time: 0x%10 
Faulting application path: %11 
Faulting module path: %12 
有时出错的模块名是Ntshrui.dll

此代码在任何其他机器上都可以正常工作多年。它发生在Windows2008R2和.NET2.0和4.0上。
可能是什么问题?

异常代码
0xc0000005
表示访问冲突。当显示“另存为”对话框时,异常可能是由Explorer外壳扩展引起的


使用Sysinternals或Nirsoft中的,您可以看到系统上安装了哪些shell扩展,并且可以逐个禁用它们。

异常代码
0xc0000005
表示访问冲突。当显示“另存为”对话框时,异常可能是由Explorer外壳扩展引起的


使用Sysinternals或Nirsoft中的,您可以看到系统上安装了哪些shell扩展,并且可以逐个禁用它们。

如果您在调试器中运行应用程序,它到底在哪里失败?在这一行DialogResult ds=sfd.ShowDialog(this);但我无法在调试器中运行,因为它位于客户环境中。
0xc000005
是访问冲突,即无效(本机)内存访问。可能真的是任何东西,甚至代码都可能是在调用您的东西时长期完成执行的原因。但是,由于您是在处理shell时获得它的,因此它可能是一个糟糕的第三方shell扩展。您可以尝试使用诸如之类的工具停用外壳扩展名,并查看错误是否消失。0xc0000005是访问冲突错误,因此请检查您是否具有文件的读/写权限。验证从NormalizeTitle获得的值在长度和格式方面是否有效。。。永远不知道这些API的“容忍度”有多高如果你在调试器中运行你的应用程序,它到底在哪里失败了;但我无法在调试器中运行,因为它位于客户环境中。
0xc000005
是访问冲突,即无效(本机)内存访问。可能真的是任何东西,甚至代码都可能是在调用您的东西时长期完成执行的原因。但是,由于您是在处理shell时获得它的,因此它可能是一个糟糕的第三方shell扩展。您可以尝试使用诸如之类的工具停用外壳扩展名,并查看错误是否消失。0xc0000005是访问冲突错误,因此请检查您是否具有文件的读/写权限。验证从NormalizeTitle获得的值在长度和格式方面是否有效。。。永远不知道这些API的“容忍度”有多高。我会这样做。@john1020:当然,总是要检查的是损坏的系统文件,请参阅我会这样做。@john1020:当然,总是要检查的是损坏的系统文件,请参阅