2011-03-08 10 views
6

Moja aplikacja używa standardowego app.config do przechowywania publicznych danych konfiguracyjnych. Jednak wciąż istnieją inne dane, które nie są publiczne, ale wciąż muszą być dostępne przez cały czas, trwałe, zmienne z aplikacji i ręcznie w przypadku niektórych problemów.Jaki jest najlepszy sposób przechowywania niepublicznych danych konfiguracyjnych w aplikacji .NET 4.0

Na przykład wyobraź sobie, że aplikacja przechowuje pewne informacje o licencjach w pliku, które nie mogą być publicznie dostępne. Jednak administrator musi mieć możliwość edytowania tego pliku za pomocą notatnika lub podobnego (bez żadnych specjalnych edytorów), więc kryptografia nie wchodzi w grę.

Czy używasz izolowanego miejsca do przechowywania? Czy masz jakieś inne sugestie? Ponieważ aplikacja nie korzysta z żadnej bazy danych, nie należy również rozważać przechowywania z DB jako opcją.

Pytanie więc, jak przechowywać dane aplikacji, aby nie było tak łatwo modyfikować ręcznie jak w app.config, ale nadal łatwo można je edytować dla użytkownika zaawansowanego.

Odpowiedz

1

Co z plikiem włączającym?

Podobnie jak atrybut plików w appSettings Element lub SectionInformation.ConfigSource Property?

<configuration> 
    <appSettings file="machine-specific.config"> 
     <add key="Application Name" value="MyApplication" /> 
    </appSettings> 
</configuration> 

Załączony plik może być chroniony przed dostępem publicznym zwykłymi prawami dostępu do systemu plików.

Zdecydowanie NIE używałbym do tego izolowanego miejsca. Szyfrowanie byłoby idealne, ale ponieważ jest to niedopuszczalne dla ciebie ...

Używanie zmiennych środowiskowych też by działało, myślę ... Ale prawdopodobnie nie użyłbym go sam.

+0

Dzięki, chciałbym rzucić okiem na tę opcję. Nie chcę wdrażać ani klucza szyfrowania, ani specjalnego narzędzia do edycji takich plików dla wszystkich zaawansowanych użytkowników na całym świecie, dlatego szyfrowanie jest niedopuszczalne. –

+0

@Thomasek: Tak, rozumiem twoje problemy z szyfrowaniem. Zdaję sobie sprawę, że zapomniałem o innej oczywistej lokalizacji do przechowywania konfiguracji: system ** rejestru **. Wartości rejestru można ukryć również przed normalnymi użytkownikami. –

+0

Czy administrator komputera docelowego nie miałby dostępu do żadnego pliku? – Cosmin

0

Mam bardzo dobre wyniki Using Settings in C#.

Możesz łatwo zarządzać ustawieniami aplikacji i użytkownika, które będą automatycznie przechowywane w odizolowanym magazynie przez klasę generowaną przez program Visual Studio. Obsługują niemal każdy typ, który można poddać szeregowaniu w XML, a jednocześnie jest on silnie wpisany.

+0

Przepraszam, może nie wyraziłem się dokładnie ... Mówię o wdrożonej aplikacji, a nie o kodzie źródłowym. O ile mi wiadomo, te pliki ustawień kompilują się jako zasoby osadzone w exe/dll. WIĘC JAK powinien być zaawansowany użytkownik zdolny do edycji tych danych? –

+0

Klasa wygenerowana przez program Visual Studio umożliwia zmianę wartości ustawień w środowisku wykonawczym i utrzymanie tych zmian. Możesz dowiedzieć się, gdzie w izolowanym magazynie znajduje się plik z aktualnymi wartościami, ale po prostu utworzyłem małe okno dialogowe lub parametr wiersza polecenia, aby przekazać informacje do aplikacji. – madd0

Powiązane problemy