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

标签 c# wpf openfiledialog

我有一个 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/

相关文章:

c# - 像å这样的C#字母未正确显示在输出文件中

c# - .net 3.5 中的 WebFaultException 类

WPF MVVM TreeView : prevent selection of a parent node when clicking on the disabled node

wpf - AdornedElementPlaceholder 当我们在验证控件模板中使用它时,它到底做了什么?

c# - 在 WPF 中对原始图像应用放大/缩小

c# - 您可以将应用程序添加到OpenFileDialog的位置栏中吗?

c# - 不使用预先构建的 .net 对象获取所有子文件夹

c# - 在 Visual Studio 中获取零引用代码列表

c# - 在过滤器中时,JSON 文件未显示在“打开文件”对话框中

c# - 使用 WPF 控件和 C# 打开文件对话框并选择一个文件