Windows 7 fichier de l'extension de l'association
Je me réfère spécifiquement pour windows 7.
J'ai un code qui associe une certaine extension, à ma demande, tel que proposé par webJose sur la page suivante:
Quelles clés de registre sont responsables de l'extension de fichier de l'association?
(Cependant j'ai correctement écrire à la clé HKEY_CURRENT_USER\Software\Classes au lieu de HKEY_CLASSES_ROOT comme l'a suggéré)
Les travaux ci-dessus au départ, ou si il n'y a pas d'autres programmes associés avec l'extension. Cependant, après l'aide de Windows 7 intégré dans "Choisir le programme par défaut..." (se trouve dans le fichier, faites un clic droit menu contextuel "Ouvrir avec"), il ré-associe l'extension avec ce nouveau programme vous choisissez.
Ce qui arrive à ce point, c'est que "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\\UserChoice" est remplacé par le système, et si le nouveau programme sélectionné prend le dessus.
Exécute le code ci-dessus, de reprendre le contrôle de l'extension ne fonctionnera pas. La seule façon de reprendre le contrôle, soit par:
- Édition de la UserChoice -> Progid valeur, qui n'est pas autorisé (ni par programmation ni à l'aide de regedit.exe - accès refusé).
- Ou la suppression de la UserChoice de la valeur et de s'assurer que votre application est le premier de la valeur MRUList sous \OpenWithList (ceci peut être réalisé à l'aide de regedit.exe mais pas par programme)
Ma question est: Est-il possible d'obtenir par programmation? Ce registre les valeurs peuvent être modifiées à reprendre le contrôle de la prolongation, après est associé avec un autre programme?
Je sais qu'il peut sembler évident que si un utilisateur par le biais de l'explorateur de jeux de l'application associée à l'extension, qu'il serait tenu de le faire de la même façon pour ré-associer l'extension à une autre application.
Le problème cependant est que j'ai un bouton dans mon application qui utilise le code mentionné ci-dessus pour vérifier association de l'extension de ma demande. Malheureusement, avec la situation ci-dessus, mon application affiche un message confirmant que l'extension est déjà associé avec succès lors de ses pas! Donc, il y a un moyen de contourner cela?
OriginalL'auteur Tamer | 2010-09-01
Vous devez vous connecter pour publier un commentaire.
La suppression de
UserChoice
devrait revenir le programme par défaut pour le fichier standard de l'association des clés (qui commence avec le ProgID dans HKCU). Sauf que vous pouvez également supprimer desOpenWithList
, qui serait de revenir avec une extrême préjudice.Edit:
Découvrez Clé de registre de Sécurité et Droits d'Accès sur MSDN, en particulier la RegSetKeySecurity fonction. N'oubliez pas que vous aurez besoin pour vous accorder le contrôle administratif de la clé avant de pouvoir le supprimer.
C'est une particularité de votre système, pas un standard de Windows. Certains logiciels que vous avez installés a changé l'acl sur la clé pour vous empêcher de le changer... sans doute ce qui a lui-même enregistré sous UserChoice. Vous devriez être en mesure de vous accorder l'accès, cependant, de le supprimer.
Peut-u s'il vous plaît confirmer cela? Maintenant, j'ai essayé sur plusieurs machines de l'exécution de l'application en tant qu'administrateur. L'accès à cette clé spécifique "UserChoice" est refusé par programme (ni écrire, ni supprimer). Sont u disant que u peut par programmation de modifier les valeurs de cette clé sur ur de la machine? Quelqu'un peut confirmer svp?
Essayez de la prise de possession de la clé avant de modifier les autorisations. Si elle est possédée par le SYSTÈME, il n'y a aucun moyen de changer les permissions si vous n'êtes pas accordée en premier lieu. De la prise de possession sera réparer cela.
De la prise de possession de la clé travaillé. J'ai utiliser le code sur le lien suivant: tomshardware.com/forum/... plus précisément de la fonction: BOOL setPermissionsExample1()
OriginalL'auteur Factor Mystic
Bien concernant le fichier assoc dans la Fenêtre 7 un nouveau "problème" araised.
C'est l'un de ceci: Vous avez à lutter pour vos droits.
En supposant que vous exécuter
Vous aurez ACCÈS DENYED.
Lorsque vous vérifiez le paramètre de sécurité de la clé dans le Regedit "UserChoice' vous verrez que il y a un réglage de windows fait pour vous, pour refuser " set " pour l'utilisateur actuel. Eh bien, vous peut-être modifier/supprimer ce paramètre dans regedit et maintenant, vous pouvez supprimer UserChoice.
Cependant pour le programmeur/scripteurs qui est un peu garce puisqu'il y a maintenant de vrais outils pour définir des Acl dans le registre. Cependant voici quelques une solution de contournement qui permet à supprimer avec les touches de l'ACCÈS DENYED (bien sûr, cela ne fonctionne qu'en cas vous avez le droit de modifier les autorisations):
ResetMovAssoc.cmd
Pour résumer ce la chose importante ici est REG RESTAURER + fichier de ruche du Registre contenant juste et clé vide.
Dans Regedit qui équivalent à l'Importation", avec juste un vide registre de la structure de fichier (Note: c'est un fichier ruche et pas un *.fichier reg).
OriginalL'auteur Nadu