Spouštění aplikace pod jiným účtem   otázka

VB.NET, Bezpečnost

Vytvořil jsem si program, který kromě jiného umožňuje spouštět aplikace i pod jiným účtem, než aktuálně přihlášeným. Uchovává název účtu a heslo v zašifrované podobě. Ke spouštění využívám třídu Process a její funkci Start, případně API funkci CreateProcessWithLogonW z knihovny Advapi32.

V obou případech vše funguje normálně pokud je použití provedeno voláním účtů se stejnými, nebo nižšími právy. Pokud to použiji z účtu s právy standardního uživatele a volám aplikaci s právy administratorského účtu, pak dostávám chybu: Požadovaná operace vyžaduje zvýšená oprávnění.

Otázka zní: Lze programově ošetřit aplikaci tak, aby výše uvedená chyba nenastala a aplikace se spustila s vyšším oprávněním? Pokud ano, pak jak postupovat.

Použitý OS: Windows7, Jazyk: Visual Basic .NET 2010

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

Ještě jsem zapomněl dodat, že děkuji za každou relevantní odpověď

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

Dobrý den, s touto problematikou sice nemám moc zkušeností, ale pro aplikace které se mají spouštět pod jiným účtem je určen typ aplikace Windows Service (služba). Zkuste se podívat tímto směrem, třeba to bude řešení.

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

Není nutné používat funkci Windows API, .NET Framework podporuje spuštění dokumentu nebo aplikace pod jiným uživatelským účtem pomocí jedné z verzí metody Process.Start, kde lze předat uživatelské jméno a heslo. Doporučuji abyste to přepsal.

Problém který popisujete bude nejspíš souviset s UAC, vypněte ho a zkuste zda-li problém bude přetrvávat.

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

Hezký den,

Samozřejmě vypnutím UAC to funguje, ale mně spíše zajímalo, jestli to jde i s UAC (zobrazení dotazu na obrazovce ...). No asi to zkusím přes vytvoření služby, která poběží pod účtem System.

Jinak v aplikaci používám metodu Process.Start. Windows API jsem jenom testoval (teď to čtu, špatně jsem se vyjádřil v dotazu).

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

V tom případě si zkuste pohrát s nastavením oprávnění vyžadovaného aplikací v manifestu aplikace. To je XML soubor se systémovou konfigurací aplikace, který se při kompilaci vkládá do assembly. Najdete to ve vlastnostech projektu na kartě Application, tlačítko View UAC Settings, hodnota requestedExecutionLevel.

Více informací najdete na http://msdn.microsoft.com/en-us/library/...

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

Hezký večer,

navrhované řešení je možné jenom tehdy, pokud aplikace samotná bude běžet s vyššími právy (nutno se přihlásit k účtu s vyššími právy a tedy zadat Jméno a Heslo - čemu se chci vyhnout). To spouštěnou aplikaci můžu zrovna spustit pomocí kontextové nabídky "Spustit jako Administrator".

Zkoušel jsem i spouštět pomocí Windows Service ,služby spuštěné s právy System. Bohužel jsem opět obdržel zprávu: Přístup byl odepřen. Systém pravděpodobně zjistí, že je přihlášen uživatel s nižšími právy a bez klasického spuštění přes kontextovou nabídku nepovolí spuštění aplikace s vyššími právy.

Tak nevím, možná někoho něco napadne.

Zatím všem děkuji za reakce.

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