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,除非有人有更好的想法。
您的生产组件似乎不会在完全信任下运行。 你是从网络共享运行的吗?