NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Peter
Neregistrovaný
Avatar
Peter:28.2.2011 11:04

Ahoj, kluci. Rad bych Vas poprosil o radu. Kdyz jsem udelal program, pak jsem pro neho vytvoril v Inno Setup instalacni balicek. Tak ten program ma pracovat tak, ze udaje, ktere se v nem napisou, tak se ulozi do souboru, ktery je umisten ve slozce programu v Program Files. Ale kdyz program spustim jiz naistalovany, tak mi pocitac odepre pristup. Da se to nejak obejit? Aby to do te slozky mohl ulozit kdokoliv, kdo si program nainstaluje? Predem dekuji za odpoved :)

 
Odpovědět
28.2.2011 11:04
Avatar
sdraco
Vlastník
Avatar
Odpovídá na
sdraco:28.2.2011 13:09

Windows jsou multiuživatelský systém (tím myslím ty nové od XP výše) a platí v nich přístupová práva. Funguje to tak, že uživatel smí měnit jen data ve své složce a nesmí zapisovat do obecných složek jako např. program files, protože ty jsou brány jako data všech uživatelů, resp. administrátora.
Nic obejít nejde a je to tak dobře, že to nejde. Svůj program máš špatně napsaný a musíš ho upravit tak, aby si vytvořil složku se svým názvem v %appdata% (tedy například %appdata%jmeno_mé­ho_programusou­bor.txt), to je složka konkrétního uživatele určená pro data jeho programů a tam máš pak volnou ruku cokoli ukládat.

Nahoru Odpovědět
28.2.2011 13:09
New kid back on the block with a R.I.P
Avatar
Peter
Neregistrovaný
Avatar
Odpovídá na David Hartinger
Peter:28.2.2011 21:43

Diky moc.:)

 
Nahoru Odpovědět
28.2.2011 21:43
Avatar
vrtulex
Tvůrce
Avatar
Odpovídá na
vrtulex:11.7.2011 12:29

Ono by tam na Vista/7 měla být nějaká virtualizace souborového systému, která za určitých podmínek zajistí (myslím ale, že jen u programů, které nic o Vista neví, tzn. byly kompilovány ještě předtím, než překladače znaly Vistu) přesměrování zápisů a čtení z Program Files někam do uživatelského profilu.

Podobná virtualizace funguje i v registru.

Jinak má sdraco samozřejmě pravdu. Program Files jsou určené pro ukládání souborů programů, nikoliv jejich dat či natavení. Na to máš dočasné složky a registry.

Samozřejmě se to dá všechno obejít tím, že při instalaci nastavíš na svůj adresář zápisová práva pro všechny, ale to je hodně nebezpečné. Dovolíš tím neautorizovanému kódu provádět některé útoky jako je DLL Hjacking a obejdeš bezpečnostní mechanismus, který je speciálně nasazen od Vista (možná až od 7) proti jedné z metod detekce stisku kláves (key logging).

Jinak i XPčka jsou víceuživatelský systém :-). Ale nemají tam proto moc podpůrných mechanismů (UAC, virtualizace). Je to poslední verze Windows, ve které tyhle technologie nedělají programátorům potíže.

Nahoru Odpovědět
11.7.2011 12:29
2 + 2 = 5 for extremely large values of 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Martin Dráb
David Hartinger:1.8.2011 14:27

Měl jsem na mysli XP a další :) To je myslím první systém, kde byla ta složka appdata, i když s Windows 2000 si nejsem jistý.

Nahoru Odpovědět
1.8.2011 14:27
New kid back on the block with a R.I.P
Avatar
nohandle
Neregistrovaný
Avatar
nohandle:27.2.2012 18:29

Budu mluvit jen o Vista/Seven.

Svůj program máš špatně napsaný a musíš ho upravit tak, aby si vytvořil složku se svým názvem v %appdata% (tedy například %appdata%jmeno_mé­ho_programusou­bor.txt), to je složka konkrétního uživatele určená pro data jeho programů a tam máš pak volnou ruku cokoli ukládat.

v podstatě ano, ale tohle neřeší způsob přístupu k datům sdíleným několika uživateli, v takovém případě je vhodné využít adresář ProgramData (proměnná systému %programdata%)

Ono by tam na Vista/7 měla být nějaká virtualizace souborového systému, která za určitých podmínek zajistí (myslím ale, že jen u programů, které nic o Vista neví, tzn. byly kompilovány ještě předtím, než překladače znaly Vistu) přesměrování zápisů a čtení z Program Files někam do uživatelského profilu.
>>na virtualizaci bych nespoléhal, jedná se o mechanismus, který je určený k zachování funkčnosti aplikací nevyvíjených pro vista. tzn. aplikací, které nemají manifest, nebo jeho obdobu, který říká, že jsou vista kompatibilní. Virtualizace probíhá při vyžádání akce, která není povolena právy (typický zápis do HKLM klíče registru, nebo právě zápis do ProgramFiles). v případě filesystému probíhá transparentní přesměrovnání do %AppData%\..\Lo­cal\VirtualSto­re v případě registru do HKU\(SID)_clas­ses\VirtualSto­re. podmínkou virtualizace je samozřejmně aktivní UAC.

K lepšímu pochopení jak se takovýmto problémům vyhnout ještě určitě stojí za studium jednotlivé runlevely programů, jejich oprávnění pro systém a vzájemnou interakci. Mechanismus UAC. Windows Side by Side (WinSXS), manifesty jednotlivých knihoven a pořadí v jakém se DLL načítají.

 
Nahoru Odpovědět
27.2.2012 18:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.