我有一个 WPF 应用程序,可以在我的 Vista 开发计算机上正常运行,但不能在生产 XP 机器上运行。唯一的问题是调用 OpenFileDialog.Show()。一旦我调用该方法,应用程序就会在 XP 盒子上终止。
该问题不会触发异常。 (我已经用 try-catch 块包围了该块,但无济于事。)当我单击“文件”->“打开”应用程序时,就会在 XP 中退出。有趣的是,我可以使用“文件”->“保存”并使用“另存为”对话框将文件写入磁盘。我尝试将其构建为 .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。
我只是想关闭循环。再次感谢所有贡献想法的人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)