Umístění dat aplikace   zodpovězená otázka

C#, Architektura

Dobrý den,

vím že se zde podobné téma již řešilo, nicméně můj dotaz zní: Kam je možné ve W7 umístit data aplikace?

Vyzkoušel jsem tyto umístění a ani jedna cesta mě vůbec nenechá vytvořit soubor.

ApplicationData

LocalApplicationData

jediná cesta která byla úspěšná je pomocí CommonApplicationData a to za předpokladu, že mám vypnuté UAC.

Existuje tedy na toto nějaké řešení o kterém nevím?

děkuji předem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

řešení je spousta. Třeba INNOSetup umí - jako součást instalačního procesu - nastavovat práva složkám. Pokud bude například instalace spouštěna pod administrátorem, pak můžete nastavit prakticky cokoli.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jenže pokud chci debugovat aplikaci ve VS tak INNO asi nepomůže.

Takže, když píšete že řešení je spousta, máte nějaké jiné?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mimochodem, bez vypnutého UAC ani INNO nepomůže, nebo někde dělám chybu při instalaci ?

Konkrétně při použití CommonApplicationData.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jaká data aplikace? Programové soubory nebo nějaká uživatelsky-změnitelná data, nebo snad konfigurační soubory?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Konfigurační soubory.

Pro to debugování je řešením vytvořit si složku dle potřeby ručně. Pak lze zápis provádět.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Umístění konfiguračních souborů má na starosti .NET Framework a není nutné se o ně starat. Ke změně jejich umístění není žádný důvod, funguje to spolehlivě i se zapnutým UAC pod uživatelem s omezeným oprávněním.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Používám pro některé účely vlastní xml soubory (pro ukládání konfig. údajů).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak je nepoužívejte a použijte místo toho konfigurační systém .NET Frameworku. Konstantu pro složku do které mohou zapisovat všichni uživatelé zjistíte pomocí Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Jde o to, že používám komponenty třetí strany a některé nabízejí přímo metodu pro uložení/načtení layoutu do/z xml souboru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

N nenabízejí ještě nějaké jiné způsoby uložení / načtení layoutu? Třeba jako to XMLko dát právě do .NETích configuráků, dejme tomu jako string?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jsou k dispozici metody SaveToStream(FileStream) nebo SaveToXml(FilePath) takže nevím jak bych to do toho configu dostal.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V tom případě ukládejte do složky jakou jsem vám poradil. Tam má přístup každý uživatel i se zapnutým UAC.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S tím mám právě problém. Používám uvedenou složku z CommonApplicationData a bez vypnutí UAC to vyhazuje vyjímku (chyba přístupu).

Složka je vytvořena pomocí INNA při instalaci.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Nesmysl, máte někde něco špatně. Tato složka slouží pro ukládání souborů aplikací běžících pod libovolným uživatelem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je to divné, a proto tento dotaz.

- Pomocí Inna vytvořím složku {commonappdata}\MojeSlozka

- Pomocí Inna nakopíruji vlastní konfig soubor (xml) do {commonappdata}\MojeSlozka\

- Přistupuji z programu ke konfig souboru pomocí Environment.SpecialFolder.CommonApplicationData

Takže zjistil jsem, že problém je v tom, že Inno při instalaci nastaví pro skupinu Users práva pouze pro čtení.

Nevíte, lze toto nějak změnit?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takže snad již vyřešeno.

Je třeba v Innu nastavit pro danou složku požadovaná přístupová práva.

- v Properties složky (v Inno)

- karta Dir

- přidat do Permision: users-modify

Pak budou nstavena práva ke změně a zápisu i pro Users.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V Inno Setupu se všechno skriptuje, pokud používáte nějaké GUI, potom je možné že to dělá právě ono.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback