première publication dans Stackoverflow. :RÉ J'ai besoin de mon logiciel pour ajouter quelques choses dans le registre. p>
Mon programme utilisera p>
processus.start (@ "blblabla.smc"); code> p> blockQuote>
Pour lancer un fichier, mais le problème est que le problème est probablement que l'utilisateur n'aura pas de programme défini comme application par défaut pour l'extension de fichier particulière. P>
Comment puis-je ajouter des associations de fichiers au Windowsregistry? strong> p>
4 Réponses :
Si vous envisagez de fournir un programme d'installation pour votre application, utilisez simplement la fonctionnalité Association de fichiers disponible dans le cadre de l'installateur que vous choisissez d'utiliser - même le projet Visual Studio Configuration sait faire cela. P>
Pour modifier les associations de type de fichier directement à partir de votre code, je pense que vous devez regarder dans J'ai du code C # dans un projet de mine pour animaux de compagnie, qui lève la reliure pour les fichiers PDF et ajoute une option supplémentaire à leurs menus contextuels. N'hésitez pas à Vous avez un look . < / p> HKEY_CLASSES_ROOT CODE> et rechercher / créer une touche avec l'extension que vous souhaitez lier (c'est-à-dire ".pdf"). Dans cette touche, la valeur par défaut est une chaîne contenant une référence à une autre clé dans
hkey_classes_root code>. Allez Suivez ce pointeur, développez / créez la sous-clé code> coquille CODE> et ajoutez / modifiez vos commandes ici. Regardez autour de cette zone avec
regedit code> pour obtenir le fallage de la façon dont il a l'air. P>
Utilisez le Plus précisément, vous voulez le remplacer mais, au lieu de jouer avec le registre, pourquoi pas seulement dire P> registre code> a> classe in
Microsoft.win32 code> a >.
ClassesRoot code>
Propriété de Registry CODE> Pour accéder au
hkey_classes_root code >
clé (cf. Comprendre les associations de fichiers MS Windows et hkey_classes_root: services de base ). p> "Smcprocessor \"% 1 \ "" code> avec la spécification de la trajectoire de ligne de commande et de l'argument du programme que vous souhaitez associer à des fichiers avec une extension
.SMC code>. p>
Process.Start("SMCProcessor blblabla.smc");
J'ai ce code: 'Process EmulatorProcess; EmulatorProcess = processus.start (@ "C: \ Documents et paramètres \ Serg \ Desktop \ emubox v0.01 \ supernintendo \ roms \ Super Mario RPG (U) .SMC"); EmulatorProcess.WaitForinPutiveDle (); ' J'ai utilisé un chemin codé pour tester les choses. Comment pourrais-je appliquer votre dernière ligne de code à mes besoins? Merci! :RÉ
De Cette réponse : "" Le RegistryKey code> implémente de la classe
Idisposable code > Et donc, vous devriez envelopper vos clés dans un
à l'aide de code> instruction. " i> ou, vous devez également appeler Fermer ou éliminer sur le
registrykey code> lorsque vous avez terminé avec elle. Cela signifie que, y compris
CreateSubkey code> dans une chaîne de méthode, comme indiqué dans cet exemple est une mauvaise idée.
En plus des réponses déjà fournies, vous pouvez y accomplir en appelant les programmes de ligne de commande "ASSO" et "FTYPE". FTYPE associe un type de fichier avec un programme. Assoc Associe une extension de fichier avec le type de fichier spécifié via FTYPE. Par exemple: Cela apportera les entrées nécessaires au registre. Pour plus d'informations, tapez assoc /? Code> ou
ftype /? Code> à l'invite de commande. P> p>
Utilisation de python: associant une icône avec le type d'extension: p> enregistre l'extension en tant que type exécutable (pathext ): P> def refreshEnvironment():
HWND_BROADCAST = 0xFFFF
WM_SETTINGCHANGE = 0x001A
SMTO_ABORTIFHUNG = 0x0002
sParam = "Environment"
import win32gui
res1, res2 = win32gui.SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, sParam, SMTO_ABORTIFHUNG, 100)