Instalace bez administrátorského oprávnění   otázka

VB.NET

Dobrý den,

jsem postavený před problém naprogramovat aplikaci, která by měla umožnit automatický upgrade (stažením nové verze z Internetu). To by sám o sobě nebyl žádný problém, ale protože jsem už pár aplikací napsal, vím, že zásadní problém bude v samotné instalaci po stažení z Internetu. Pokud totiž bude program spuštěn pod jiným, než admin účtem (nebo jiným, který by měl dostatečná oprávnění), instalace neproběhne (z důvodu přístupovým práv ke složkám, k registru Windows atd.)

Jakým způsobem tedy např. funguje Windows Update? Ten přeci i běžnému uživateli umožní instalaci různých aktualizací bez nutnosti přihlašování se pod vyššími právy.

Můžete prosím poradit, jak tento problém vyřešit? Případně mne odkázat na nějaký informační zdroj, kde by se tato problematika dala nastudovat?

Děkuji

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

Z tohoto důvodu existuje instalace ClickOnce, která nic nezapisuje tam, kam není běžnému uživateli dovoleno (Program Files, větev HKLM v registru, apod.).

Windows Update (Microsoft Update) je služba, která běží pod systémovým účtem a tudíž má přístup všude tam, kam je potřeba.

Můžete se tím inspirovat a pro aktualizaci aplikace napsat službu, která bude běžet pod systémovým účtem a ne pod účtem pod kterým běží daná aplikace. Takto to má řešeno spousta aplikací, například známé Nero Burning ROM.

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

Děkuji Vám pane Linhart za urychlenou odpověď.

S tou službou to určitě vyzkouším.

Ještě jednou děkuji.

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

Já to dělám trochu jinak - při INSTALACI je vyžadován administrátor a při aktualizaci už nikoliv. Tam, kam potřebuji si při instalaci nastavím potřebná práva a při aktualizaci už to lze provést i "obečejným" účtem.

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

A jak řešíte nahrazení souborů v Program Files novější verzí?

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

V INNO setupu lze nastavit Permissions.

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

Ano vím, ale to chcete říct, že v instalátoru nastavujete přístup pro zápis u Users, případně jiné skupiny obsahující běžné uživatele?

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

Ano, pro vybrané soubory a/nebo složky.

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

To jste mě pobavil. To potom odepření přístupu pro zápis běžným uživatelům ztrácí jakýkoliv smysl. To odepření přístupu tam není pro nic za nic, je to kvůli tomu, aby kdekdo nemohl libovolně mazat/přejmenovávat/dělat jiný bordel v Program Files a tím že tam ten přístup povolíte (byť jen pro vaší aplikaci) tuto ochranu zcela potlačíte.

Jediný správný přístup je:

1) Řešit to pomocí služby jak jsem již uváděl

2) Povolit aktualizace pouze uživatelům s administrátorským oprávněním

3) Využít ClickOnce nebo Systems Management Server

Proto se také konfigurační (mimo těch pouze pro čtení) a jiné datové soubory neukládají do Program Files ale do AppData.

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

Komentujete něco, čemu nerozumíte. Já jsem nemluvil o Program Files, mě to musí fungovat i na Win98 a dokonce ani nejde o VB.NET aplikaci.

Řešení pomocí služby smysl má, ale rozhodně to není jediný správný přístup. Všimněte si, kolik služeb je v běžném PC spuštěno jenom kvůli aktualizacím desítek programů od antivirů po samotný Windows Update. Volat adminovi kvůli přeplácnutí jednoho exáče 2x týdně taky nebudu a ClickOnce odpadá kvůli tomu, že to není .net. Je třeba brát v úvahu konkrétní situaci.

A s tím ukládáním datových souborů do Program Files taky nemáte pravdu, zkuste si vytvořit novou databázi třeba v MSSQL a ona se standardně uloží právě do \Program Files\...\MSSQL\Data.

A konečně - spousta "takyadminů" DODNES migruje programy tak, že si zazálohují složku aplikace a myslí si, že tam přece "bude všechno". Tohle sice vždycky pobaví i mě, ale zákazníkovi se pak těžko vysvětluje, že mají vyhodit admina a ne mě.

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

Jakou má souvislost Program Files a verze Windows 98? Že to není .NET aplikace není nikde zmíněno. Kvůli aktualizacím je běžně spuštěna pouze služba Microsoft Update, případně to Nero (pokud ho má někdo nainstalované, nevím od jaké verze tam ta aktualizační služba je) a i kdyby tam těch aktualizačních služeb běželo 10, ničemu to nevadí. Co se týče MSSQL, do databáze se zapisuje do Program Files, ale to samozřejmě zajišťuje služba SQL Serveru, která rovněž běží pod systémovým účtem (normální uživatel má přístup pouze pro čtení a dokonce je z hlediska bezpečnosti lepší, aby do složek databáze neměl přístup žádný). Předpokládal jsem, že takovou základní věc víte.

nahlásit spamnahlásit spam 2 / 2 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