我有一个 WPF 应用程序可以在我的 Vista 开发机器上运行良好,但不能在生产 XP 机器上运行。唯一的问题是调用 OpenFileDialog.Show()。一旦我调用该方法,应用程序就会在 XP 机器上终止。
问题没有触发异常。 (我已经将 block 包围在 try-catch block 中但无济于事。)当我单击"file"->“打开应用程序”时,它会在 XP 中退出。有趣的是,我可以使用"file"->“保存”并使用“另存为”对话框将文件写入磁盘。我已经尝试将它构建到 .Net 3.0 和 3.5,但没有任何区别。
我已经尝试了 Microsoft.Win32.OpenFileDialog 和 System.Windows.Forms.OpenFileDialog 并且得到了完全相同的症状。
Microsoft.Win32 变体的代码块:
try { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog().Value) { //do something } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error!"); }
我唯一的线索是安全事件日志中的以下(部分)条目。
Event Type: Failure Audit Event Source: Security Event Category: Object Access Event ID: 560 Description: Object Open: Object Server: Security Object Type: Key Object Name: \REGISTRY\MACHINE\SOFTWARE\Microsoft\EnterpriseCertificates\Disallowed Accesses: DELETE READ_CONTROL WRITE_DAC WRITE_OWNER Query key value Set key value Create sub-key Enumerate sub-keys Notify about changes to keys Create link
有什么想法吗? (请放轻松!)
最佳答案
感谢您的建议。我验证了注册表权限和完全信任问题。事实证明,尽管我专门针对 .Net 3.0(基于标准组织镜像)构建了我的应用程序,但我仍然不完全理解对 .Net 3.5 SP1 的依赖性。我的问题的解决方案是在所有受影响的计算机上安装 .Net 3.5 SP1。
我只是想结束循环。再次感谢所有提出想法的人。
关于C# WPF OpenFileDialog 在 XP 中导致崩溃,而不是在 Vista 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550030/