C# Windows XP中的.NET Framework 4在saveFileDialog.ShowDialog()上出现错误

C# Windows XP中的.NET Framework 4在saveFileDialog.ShowDialog()上出现错误,c#,.net,winforms,windows-xp,C#,.net,Winforms,Windows Xp,我正在使用.NET Framework 4编写一个Windows窗体应用程序,它在Windows 7和8上运行得非常好,但是当我想在Windows XP中显示一个saveFileDialog时,该应用程序在显示对话框窗口3到6秒后关闭,我在两台使用Windows XP的不同计算机上测试了该应用程序,每台计算机上都出现了不同的错误!!,因此,在Windows事件日志中,我可以看到错误消息: 在第一台计算机中显示的错误是:“Faulting module clr.dll”,因此在本例中,我从另一台

我正在使用.NET Framework 4编写一个Windows窗体应用程序,它在Windows 7和8上运行得非常好,但是当我想在Windows XP中显示一个saveFileDialog时,该应用程序在显示对话框窗口3到6秒后关闭,我在两台使用Windows XP的不同计算机上测试了该应用程序,每台计算机上都出现了不同的错误!!,因此,在Windows事件日志中,我可以看到错误消息:

  • 在第一台计算机中显示的错误是:“Faulting module clr.dll”,因此在本例中,我从另一台Windows XP中重写了.dll文件,但错误仍然存在

  • 在第二台机器中,显示的错误是:“进程因堆栈溢出而终止”,我在应用程序中没有使用递归,只是显示对话框

我在这行代码中使用了一个try-catch,但它不起作用,应用程序只是关闭了

有人对此有线索吗???,这是我的事件处理程序的代码

private void btnExaminar_Click(object sender, EventArgs e)
{
    try
    {
        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            txtExaminar.Text = saveFileDialog.FileName;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);                
    }

}    

有关答案,请查看[here][1],因为windows XP不支持4.0[1]:OpenFileDialog是“危险的”,因为它允许将所有shell扩展加载到进程中,这是赋予对话框与windows资源管理器相同功能所必需的。一个有缺陷的扩展可以造成相当大的损害,让它崩溃你的应用程序,因为它正在腐蚀内存是非常正常的。从把这些机器从四层楼的窗户里推出来算起,时间差不多了,你需要SysInternals的自动运行工具来诊断这个麻烦制造者。XP SP2对.NET 4.0的支持非常好。汉斯·帕桑特的评论应该变成一个答案,因为这肯定是问题所在。