.net windows api: obtenir ou définir le répertoire le plus récent utilisé par fichier de dialogue ouvert

StackOverflow https://stackoverflow.com/questions/4423121

  •  09-10-2019
  •  | 
  •  

Question

Y at-il un moyen de définir ou d'obtenir le répertoire initial utilisé par le fichier vista dialogue ouvert sans définir la propriété InitialDirectory sur le fichier de dialogue ouvert?

Je veux que mon WPF (au démarrage) définir le dossier par défaut une fois pour toutes les boîtes de dialogue Ouvrir / Enregistrer. Si vous remarquez dans Vista tant que la machine est en marche, il continue à partir d'un fichier ouvert / default / suivi dernier répertoire sélectionné de l'utilisateur enregistrer comme des boîtes de dialogue. Bloc-notes ou des programmes agissent ainsi.

La raison pour laquelle je suis en train d'y arriver est parce que je ne veux pas avoir à le suivre dans mon application, le réglage et l'enregistrement du dossier. Je voudrais juste pour définir la valeur par défaut et laissez-le suivre après Vista.

Directory.SetCurrentDirectory ne le fait pas.

Était-ce utile?

La solution

Vous excluez la chose exacte que vous devez faire pour résoudre votre problème. Si vous ne définissez pas alors InitialDirectory la boîte de dialogue utilise le dernier répertoire utilisé. Cette information est stockée dans le registre, indexé par nom de processus. Vous ne pouvez pas tourner de manière sélective ce comportement hors tension.

La clé de registre qui est utilisé a changé entre la version de Windows. Je pense que sur Win7 il est maintenant HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ comdlg32 \ LastVisitedPidlMRU. Il n'est plus en clair comme il l'habitude d'être sur les versions antérieures. Si vous voulez analyser le risque d'essayer les valeurs clés qui y sont énumérés alors n'assurez-vous de vérifier la version de Windows. Franchement, ce ne vaut pas le code simple que vous devriez écrire pour initialiser la propriété InitialDirectory.

Autres conseils

Si vous ne voulez pas avoir à écrire du code pour maintenir le chargement et l'enregistrement du répertoire pour OpenFileDialog, écrire une fonction wrapper qui fait cela, alors il suffit d'appeler votre fonction d'emballage ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top