Comment Écrire à un Utilisateur.Fichier de configuration par le biais de ConfigurationManager?
Je suis en train de persister les paramètres de l'utilisateur dans un fichier de configuration à l'aide de ConfigurationManager.
Je veux portée de ces paramètres à l'utilisateur seulement, parce que l'application des modifications ne peuvent pas être enregistrées sur Vista/Win 7 sans privilèges d'administrateur.
Cela semble me la configuration de l'utilisateur, ce qui semble être enregistré ici en Win 7 ([Lecteur]:\Users\[nom d'utilisateur]\AppData\Local\[ApplicationName]\[AssemblyName][hash]\[Version\)
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
Chaque fois que j'essaie d'enregistrer les modifications apportées à cette config je bénéficier de cette exception:
InnerException: System.InvalidOperationException
Message="ConfigurationSection properties cannot be edited when locked."
Source="System.Configuration"
StackTrace:
at System.Configuration.SectionInformation.VerifyIsEditable()
at System.Configuration.MgmtConfigurationRecord.GetConfigDefinitionUpdates(Boolean requireUpdates, ConfigurationSaveMode saveMode, Boolean forceSaveAll, ConfigDefinitionUpdates& definitionUpdates, ArrayList& configSourceUpdates)
J'ai essayé d'ajouter une coutume ConfigurationSection pour cette config. J'ai essayé d'ajouter à la AppSettingsSection. Chaque fois que j'appelle config.Save()
il lève l'exception ci-dessus.
Des idées?
J'ai essayé d'utiliser le ApplicationSettingsBase classe par l'intermédiaire du Projet->Paramètres de designer, mais il n'apparaît pas que vous pouvez économiser de types personnalisés avec cela. Je veux une fonctionnalité similaire avec la possibilité d'enregistrer des types personnalisés.
OriginalL'auteur Josh G | 2010-04-13
Vous devez vous connecter pour publier un commentaire.
Vous devez définir la SectionInformation.AllowExeDefinition valeur pour la section:
La valeur par défaut est ConfigurationAllowExeDefinition.MachineToApplication qui ne permet de placer la section sur la machine.de configuration et d'application.exe.config.
Il semble que je devais définir le AllowExeDefinition AVANT l'ajout de la section et enregistrer les modifications pour la première fois. Maintenant, tout semble fonctionner correctement.
pour une raison quelconque, à l'aide de la ConfigurationManager.OpenExeConfiguration ConfigurationUserLevel surcharge, n'a pas permis de me modifier & enregistrer le fichier en affirmant que ConfigurationSection les propriétés ne peuvent pas être modifiés lorsque la porte est verrouillée. seulement quand j'ai utilisé le string exepath surcharge, j'ai été capable de sauver la configuration.
J'ai juste rencontré ce. J'ai corrigé par la mise à jour de la nouvelle section avant de l'ajouter à la config.Les articles de la collection.
OriginalL'auteur Jay