Question

J'ai quelques questions à vous poser:

1) Est-il possible de faire en sorte que mon programme change en association avec le type de fichier mais seulement quand est-il en cours d'exécution? Voyez-vous quelque chose de mal avec ce comportement?

2) L’autre option que je vois est de laisser les utilisateurs décider de s’ouvrir avec mon application ou de restaurer l’association par défaut ... par exemple: "capturer tous les fichiers .lala". ou "rétablir l'association .lala". Comment puis-je faire ceci? Quelle est selon vous la meilleure approche?

Était-ce utile?

La solution

En ce qui concerne les associations de fichiers, j'ai déjà écrit une réponse indiquant qu'au moins couvre le" Comment ".

Cela devrait également vous indiquer la bonne direction pour gérer la sauvegarde et la restauration. Avec un accès direct au registre via c #, il n’est pas nécessaire d’utiliser des fichiers .reg. Vous êtes donc libre de sauvegarder la valeur précédente comme vous le souhaitez dans votre application et de la restaurer à partir de cet emplacement.

La question clé est la suivante: Devriez-vous changer les associations de fichiers de manière aléatoire? Au moins, demander à l'utilisateur d'avance serait évidemment nécessaire (comme vous l'avez également indiqué).

De plus, les utilisateurs de Vista avec UAC activé ou les utilisateurs sans privilèges d'autres versions de Windows peuvent ne pas disposer de l'autorisation requise pour modifier les associations de fichiers globales. La procédure de (dés) installation de votre programme peut être le seul endroit où cela peut réussir.

EDIT

Comme Franci Penov a indiqué dans sa réponse , il y a un moyen de changer les associations de fichiers locaux par utilisateur, même pour les non-administrateurs (c'est pourquoi j'ai parlé des "associations globales" dans le paragraphe précédent). Il a également mentionné les raisons pour lesquelles il n’est pas souhaitable d’y aller.

Autres conseils

Vous pouvez implémenter un " à la volée " l’association de fichiers change en associant un petit exécutable à cette extension de fichier qui, au démarrage, vérifiera si votre application principale est en cours d’exécution et lui transmettra le nom du fichier ou s’il n’est pas en cours d’exécution, il invoquera le paramètre "normal". application associée.

Le principal avantage de cette approche réside dans le fait que vous n’avez besoin que d’une seule fois avec le registre.

Les principaux inconvénients de cette approche sont les suivants:

  • vous avez besoin d'un processus d'assistance
  • l'application détenue par " " ces extensions de fichier peuvent détecter le changement et se plaindre à l'utilisateur, ce qui entraîne le message "réparation". vous sortir ainsi de l'image.

Vous pouvez également modifier l'association de fichier au démarrage de votre programme principal. Cela fonctionnera même pour les utilisateurs non-administrateurs. alors que les associations de fichiers sont stockées dans HKEY_CLASSES_ROOT , il existe un petit truc: HKCR est en réalité une carte de HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes et de HKEY_CURRENT_USER \ SOFTWARE \ Classes . Ainsi, vous pouvez enregistrer temporairement l’extension de fichier de l’utilisateur actuel dans HKCU et "shadow". l'association originale de HKLM.

Bien sûr, je vous déconseille toutefois cette approche, car il ne faut qu'un seul plantage dans votre application pour rendre cette association permanente et que très peu d'applications savent comment traiter les associations de fichiers dans HKCU, il y a de fortes chances que ce soit un situation irrécupérable pour l'application d'origine.

Cela peut probablement être fait, mais je pense que cela finirait par être lourd. Toutes les associations de types de fichiers sont stockées dans le registre. Vous devez donc écrire / rétablir les entrées de registre chaque fois que votre application démarre et s'arrête. De plus, selon la fréquence à laquelle vous le faites, les nouvelles associations peuvent ne pas être détectées immédiatement dans l'explorateur Windows.

Les associations sont répertoriées sous HKEY_CLASSES_ROOT dans le registre et peuvent être mappées de multiples façons (types mime / progIDs / etc).

De nombreuses applications que j'ai vues demandent si vous souhaitez associer certains types de fichiers à l'application lors de l'installation, et vous permettent de désactiver les paramètres actuels.

Je ne pense pas que je recommanderais "à la volée". associations de types de fichiers

1) vous devez définir les types de fichiers qui figurent dans la liste déroulante des types de fichiers Open Dialog. En dehors de cela, il est possible de modifier le type de fichier par défaut à l'ouverture d'une application, puis de le remplacer lors de la fermeture de l'application, car les associations de types de fichiers ne sont qu'un paramètre de registre.

En ce qui concerne le mal, je ne le ferais pas. La première raison est que ce n'est pas le comportement standard des applications. La deuxième raison est que si votre application ou votre ordinateur se ferme de manière inattendue, vous courez le risque de ne pas rétablir l'association avec son paramètre d'origine.

2) Windows permet par défaut à l'utilisateur de choisir ces options en utilisant le clic droit de la souris et l'option "Ouvrir avec". commander.

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