C# - Fichier de l'Association de l'Accès à la clé de registre 'HKEY_CLASSES_ROOT\' est refusé
J'ai actuellement un programme qui définit l'association de fichier à l'aide de la base de registre (Remarque, c'est un .NET 2.0 donc je dois passer par la méthode d'enregistrement). Le problème est, car il essaie d'écrire à HKCR, il existe la possibilité de courir dans un problème administratif (sur d'autres machines). Est-il une manière plus universelle pour définir l'association de fichier (par .NET 2.0) comme l'utilisation HKCU ou d'une autre méthode qui ne nécessite pas de privilèges d'administration.
string keyName = "Class";
string keyValue = "Class File";
string apppath = Application.ExecutablePath.ToLower() + " \"%1\"";
RegistryKey key;
key = Registry.ClassesRoot.CreateSubKey(keyName);
key.SetValue("", keyValue);
RegistryKey iconkey;
key = Registry.ClassesRoot.CreateSubKey(keyName);
iconkey = key.CreateSubKey("DefaultIcon");
iconkey.SetValue("", Environment.CurrentDirectory + "\\resources\\musicfile.ico");
key = key.CreateSubKey("shell");
key = key.CreateSubKey("open");
key = key.CreateSubKey("command");
key.SetValue("", apppath);
OriginalL'auteur user | 2011-01-05
Vous devez vous connecter pour publier un commentaire.
HKEY_CLASSES_ROOT
est un alias, une fusion de deux autres endroits:HKEY_CURRENT_USER\Software\Classes
HKEY_LOCAL_MACHINE\Software\Classes
Vous avez à décider pourquoi vous êtes de l'enregistrement du fichier. Est le fichier d'enregistrement devrait être disponible pour tous les utilisateurs? Si donc, vous voulez vous inscrire à l'association avec
HKEY_CLASSES_ROOT
(qui sera implicitement l'écrireHKEY_LOCAL_MACHINE
.Ou est l'enregistrement signifiait seulement pour l'utilisateur courant? Si oui, inscrire votre fichier dans
HKEY_CURRENT_USER
.Garder à l'esprit que juste parce qu'un utilisateur installe le programme ne signifie pas que tous les utilisateurs veulent; considérons donc ce que le programme est fait pour.
De toute façon, le bon moment pour enregistrer votre association de fichier est en cours d'installation avec le programme d'installation MSI. MSI installateurs de savoir comment demander de l'altitude lors de l'installation - si c'est nécessaire. Pas tous les logiciels a aller en
Program Files
, certains peuvent aller dans%APPDATA%
(c'est à dire de Chrome) où aucun des privilèges d'administrateur sont nécessaires pour installer et c'est seulement installé pour un seul utilisateur.Ouais...mais c'est sorta à bas prix. Vous avez répondu tout d'abord, je viens de pêche pour les votes 🙂
Je vous remercie pour toutes les informations. Il semble utilise HKCU serait plus approprié. Pour l'installateur, je suis actuellement en utilisant Visual Studios installateur fourni. De Plus, dans mon application, il existe une option pour désactiver l'association de fichier, de sorte qu'il va au-delà de l'installateur.
OriginalL'auteur Ian Boyd
Vous pouvez utiliser spécifiques à l'utilisateur des associations de fichiers dans les situations où vous n'avez pas accès à l'HKLM.
Sinon, vous pouvez manifester votre application nécessite des droits d'administrateur.
Plus normalement des associations de fichiers sont définies lors de la demande de l'installer où les droits d'administrateur sont normalement disponibles.
Bien, j'ai juste écrit ce que je savais et maintenant, bien sûr, vous pouvez prendre à partir de ce quelle que soit s'avère utile
OriginalL'auteur David Heffernan