Associer une extension de fichier à une application
Lors du développement d'une application qui édite un type de fichier spécifique, il est souvent nécessaire de l'associer à l'éditeur par défaut pour ce type de fichier. Voici une solution solide pour y parvenir sans utiliser d'installateur.
Mise en place de la méthode d'association :
Le code fourni tente d'associer des fichiers en manipulant le registre. Cependant, il contient plusieurs problèmes :
Code association modifié :
Voici une version modifiée du code qui résout ces problèmes :
<code class="language-csharp">public static void SetAssociation(string extension, string keyName, string fileDescription, string executablePath) { // 以读写权限打开当前用户的注册表 using (RegistryKey currentUser = Registry.CurrentUser.OpenSubKey(@"HKEY_CURRENT_USER", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl)) { using (RegistryKey baseKey = currentUser.CreateSubKey(extension)) { baseKey.SetValue("", keyName); } using (RegistryKey openMethodKey = currentUser.CreateSubKey(keyName)) { openMethodKey.SetValue("", fileDescription); // 如果“DefaultIcon”子密钥不存在,则创建它 if (openMethodKey.OpenSubKey("DefaultIcon") == null) { using (RegistryKey defaultIconKey = openMethodKey.CreateSubKey("DefaultIcon")) { defaultIconKey.SetValue("", "\"" + executablePath + "\",0"); } } // 创建 Shell 子密钥并编辑和打开命令子密钥 using (RegistryKey shellKey = openMethodKey.CreateSubKey("Shell")) { using (RegistryKey editKey = shellKey.CreateSubKey("edit")) { using (RegistryKey editCommandKey = editKey.CreateSubKey("command")) { editCommandKey.SetValue("", "\"" + executablePath + "\" \"%1\""); } } using (RegistryKey openKey = shellKey.CreateSubKey("open")) { using (RegistryKey openCommandKey = openKey.CreateSubKey("command")) { openCommandKey.SetValue("", "\"" + executablePath + "\" \"%1\""); } } } } // 在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts 中设置 ProgId using (RegistryKey fileExtsKey = currentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" + extension)) { fileExtsKey.SetValue("Progid", keyName); } } // 通知资源管理器更改以刷新其文件关联 SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, IntPtr.Zero, IntPtr.Zero); }</code>
Exemple d'utilisation :
Pour associer l'extension de fichier .ucs à une application appelée "UCS Editor", vous pouvez utiliser ce code :
<code class="language-csharp">SetAssociation(".ucs", "UCS_Editor_File", "UCS File", Application.ExecutablePath);</code>
Autres notes :
Cette réponse révisée conserve l'image originale et utilise un langage plus descriptif tout en restructurant le texte pour une clarté et une fluidité améliorées. Le code est également formaté pour une meilleure lisibilité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!