Waar moet ik apparaatbrede applicatie-instellingen opslaan voor niet-zwervende gebruikers?

Ik heb een WPF-toepassing die moet worden uitgevoerd voor alle gebruikers van een computer met dezelfde instellingen. De instellingen moeten gelezen/geschreven zijn. Ik heb eerder gebruikersconfiguratie-instellingen opgeslagen in CommonApplicationData, bijvoorbeeld

var settingsFile = Path.Combine(Environment.GetFolderPath(
  Environment.SpecialFolder.CommonApplicationData),
    "[company]", "[product]", "settings.xml");

Maar ik heb vanmorgen gelezen dat CommonApplicationData wordt gebruikt voor zwervende profielen, wat betekent dat ze niet computerspecifiek zijn. Van wat ik kan vinden, hebben we de volgende opties voor toepassingsgegevens ( source ):

// Store application-specific data for the current roaming user.
// A roaming user works on more than one computer on a network.
// A roaming user's profile is kept on a server on the network and is loaded onto a system ' when the user logs on.
System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);


// Store in-common application-specific data that is used by all users.
System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);


// Store application-specific data that is used by the current, non-roaming user.
System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

Samengevat zijn de opties

  • Eén gebruiker, roamen
  • Alle gebruikers, roamen
  • Eén gebruiker, niet-roaming

Wat ik nodig heb, zijn alle gebruikers, niet-roaming. Mijn eerste gedachte is om alles in de installatiemap te stoppen, maar dat lijkt een beetje old-school?

Gedachten?

6
Al een oude post, maar ik gebruik deze oplossing met succes stackoverflow.com/questions/14752048/…
toegevoegd de auteur Rolfi, de bron
Ik las het in Bill Wagner's boek Effective C #. Maar dat is de enige plaats waar ik deze lekkernij kan vinden, dus misschien is het een zeldzame vergissing van Wagner, en ik zou heel graag willen horen of ik het mis heb.
toegevoegd de auteur Martin Doms, de bron
Misschien begrijp ik roaming niet goed, dus misschien is dit duidelijk uit die korte beschrijving, maar wat als een of meer van die gebruikers een zwervende gebruiker is?
toegevoegd de auteur Martin Doms, de bron
De schrijftoegang is geen probleem, ik geef schrijftoegang in mijn installatieprogramma. Maar toch bedankt :)
toegevoegd de auteur Martin Doms, de bron
Er is geen standaardmap in de standaardinstallatie van Windows, waar alle gebruikers schrijftoegang hebben. Je moet er zelf een maken.
toegevoegd de auteur Hans Passant, de bron
Waar heb je gelezen dat CommonApplicationData aan het roamen is? Ik vind het een beetje vreemd ...
toegevoegd de auteur Anders Abel, de bron
Uit de MSDN documentatie: "De directory die dient als een gemeenschappelijke repository voor applicatiespecifieke data die door alle gebruikers wordt gebruikt. "
toegevoegd de auteur Paul Ruane, de bron

2 antwoord

Here is a good explanation of the appdata folder and other items related to roaming user.

Volgens de MSDN-documentatie :

CommonApplicationData is "the directory that serves as a common repository for application-specific data that is used by all users"

terwijl

LocalApplicationData is "the directory that serves as a common repository for application-specific data that is used by the current, non-roaming user".

3
toegevoegd

Mijn voorkeur hiervoor is Toepassingsinstellingen die breed of per gebruiker kunnen worden gebruikt zoals je wilt per instelling.

0
toegevoegd
Toepassingsscoped-instellingen kunnen niet tijdens runtime worden gewijzigd, dus ze zijn alleen geschikt voor waarden die nooit veranderen. Het zou kunnen werken voor op, maar waarschijnlijk niet op basis van zijn specifieke vraag.
toegevoegd de auteur tonyenkiducx, de bron