2010-08-23 4 views
3

J'ai une application WPF qui fonctionne bien sur ma machine de développement Vista, mais pas sur la production des boîtes XP. Le seul problème est avec un appel à OpenFileDialog.Show(). Dès que j'appelle la méthode, l'application est terminée sur la boîte XP.causant C# WPF OpenFileDialog accident dans XP, pas dans Vista

Le problème ne déclenche pas une exception. (J'ai entouré le bloc dans un bloc try-catch en vain.) Lorsque je clique sur Fichier-> Ouvrir l'application juste et quitte en XP. Fait intéressant, je peux écrire des fichiers sur le disque avec Fichier-> Enregistrer et en utilisant la boîte de dialogue Enregistrer sous. J'ai essayé de le construire à .Net 3.0 et 3.5 mais cela ne fait pas de différence.

J'ai essayé à la fois Microsoft.Win32.OpenFileDialog et System.Windows.Forms.OpenFileDialog et obtenir le même symptôme exact.

Le bloc de code pour la variante Microsoft.Win32:

 
try 
{ 
    OpenFileDialog ofd = new OpenFileDialog(); 
    if (ofd.ShowDialog().Value) 
    { 
     //do something 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString(), "Error!"); 
} 

Les seuls indices que j'ai est la suite de l'entrée (partielle) du journal des événements de sécurité.

 
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 

Des idées? (Pleeeease!)

+1

'System.Windows.Forms.OpenFileDialog' est le WinForms un et ne doit pas être utilisé dans WPF. – Powerlord

Répondre

0

Il semble qu'il y ait un problème d'autorisation avec la clé de Registre. Ma première suggestion serait de vérifier les autorisations sur cette clé et de vérifier que les ACL sont corrects (mieux les comparer à une autre boîte XP où l'application fonctionne).

Si les autorisations sont OK, alors vous devriez essayer de réinstaller .NET (peut-être le programme d'installation de rétablir tous permissons requis sur les clés de registre).

Si tout le reste échoue, réinstaller XP sur des machines problématiques, à moins que quelqu'un a une meilleure idée.

0

Il ne semble pas que votre ensemble de production est en cours d'exécution en pleine confiance. Courez-vous à partir d'un partage réseau?

1

Merci pour les conseils. J'ai vérifié les autorisations de registre et le problème de confiance totale. Il s'avère que, même si j'ai spécifiquement construit mon application sur .Net 3.0 (basé sur l'image organisationnelle standard), il y avait une dépendance sur .Net 3.5 SP1 que je ne comprends toujours pas complètement. La solution à mon problème était d'installer .Net 3.5 SP1 sur tous les ordinateurs affectés.

Je voulais juste fermer la boucle. Merci encore à tous ceux qui ont contribué aux idées.

Questions connexes