C#WPF OpenFileDialog导致XP崩溃,而不是Vista

我有一个WPF应用程序,可以在我的Vista开发机器上正常运行,但不能在生产XP机器上运行。 唯一的问题是调用OpenFileDialog.Show()。 一旦我调用该方法,应用程序就会在XP框上终止。

该问题不会触发exception。 (我在try-catch块中包围了块无效。)当我单击File->打开应用程序时,在XP中退出。 有趣的是,我可以使用File-> Save并使用Save As对话框将文件写入磁盘。 我已经尝试将其构建为.Net 3.0和3.5但它并没有什么区别。

我已经尝试过Microsoft.Win32.OpenFileDialog和System.Windows.Forms.OpenFileDialog并获得完全相同的症状。

Microsoft.Win32变体的代码块:

尝试  
 {  
     OpenFileDialog ofd = new OpenFileDialog();
     if(ofd.ShowDialog()。Value)
     {
         //做一点事
     }
 }
 catch(Exception ex)
 {
     MessageBox.Show(ex.ToString(),“Error!”);
 }

我有的唯一线索是来自安全事件日志的以下(部分)条目。

事件类型:失败审核
事件来源:安全
事件类别:对象访问
事件ID:560
描述:
对象打开:
        对象服务器:安全性
        对象类型:密钥
        对象名称:\ REGISTRY \ MACHINE \ SOFTWARE \ Microsoft \ EnterpriseCertificates \ Disallowed
        访问:DELETE
                         READ_CONTROL
                         WRITE_DAC
                         WRITE_OWNER
                        查询键值
                        设置键值
                        创建子键
                        枚举子键
                        通知有关密钥的更改
                        创建链接

有任何想法吗? (Pleeeease!)

感谢您的建议。 我validation了注册表权限和完全信任问题。 事实certificate,虽然我专门为.Net 3.0构建了我的应用程序(基于标准的组织形象),但仍然存在对.Net 3.5 SP1的依赖,我仍然不完全理解。 我的问题的解决方案是在所有受影响的计算机上安装.Net 3.5 SP1。

我只想关闭循环。 再次感谢所有提出想法的人。

似乎注册表项存在权限问题。 我的第一个建议是检查该密钥的权限并validationACL是否正确(最好将它们与应用程序工作的另一个XP框进行比较)。

如果权限正常,那么您应该尝试重新安装.NET(可能安装程序将重置注册表项上的一些必需权限)。

如果所有其他方法都失败了,请在有问题的计算机上重新安装XP,除非有人有更好的想法。

您的生产组件似乎不会在完全信任下运行。 你是从网络共享运行的吗?