Fórum Root.cz
Hlavní témata => Windows a jiné systémy => Téma založeno: zu1234 10. 02. 2022, 20:14:56
-
Neorientuji se úplně na windows platformě:
Mám aplikaci v pythonu, která se v případě potřeby spustí sama znovu
s administrátorskými opravněními (po dotazu na UAC).
Stejně to funguje i po přeložení do exe pomocí pyinstaller-u.
Funguje to, ale je to komplikované.
Moje otázka: Je možné pomocí "Inno Setup" nainstalovat
tuto aplikaci tak, aby se následně spouštěla a běžela
bez UAC dotazu s administrátorskými opravněními?
-
Legitimní cesta podle mě přesně pro váš případ neexistuje. Co se týče těch nelegitimních, tak můžete mrknout sem
https://github.com/hfiref0x/UACME
Pokud aplikace jen běží na pozadí, můžeete ji nainstalovat jako službu (a pak si v podstatě můžete oprávnění zvolit), případně i i dovolit, aby ji mohli spouštět i běžní uživatelé (viz např. služba Fax).
-
Legitimní cesta podle mě přesně pro váš případ neexistuje. Co se týče těch nelegitimních, tak můžete mrknout sem
https://github.com/hfiref0x/UACME
Pokud aplikace jen běží na pozadí, můžeete ji nainstalovat jako službu (a pak si v podstatě můžete oprávnění zvolit), případně i i dovolit, aby ji mohli spouštět i běžní uživatelé (viz např. služba Fax).
1) Ad github: nerad bych zabředl ještě hlouběji do něčeho čemu moc nehovím.
2) Jako služba asi ne, měla by to být GUI aplikace.
Ale díky.
-
Služba ve Windows může mít i GUI, ale myslím, že pak zase nemůže běžet s administrátorskými oprávněními.
Podle mne je jediné schůdné řešení takové, že budete mít běžnou aplikaci s GUI, vedle ní službu s administrátorským oprávněním, a ty dvě aplikace mezi sebou budou nějak komunikovat.
-
Služba ve Windows může mít i GUI, ale myslím, že pak zase nemůže běžet s administrátorskými oprávněními.
Podle mne je jediné schůdné řešení takové, že budete mít běžnou aplikaci s GUI, vedle ní službu s administrátorským oprávněním, a ty dvě aplikace mezi sebou budou nějak komunikovat.
Služba běží v kontextu toho účtu, který jí nastavíš jako provozní při instalaci. A GUI aplikace s ní může komunikovat mnoha způsoby, např skrze pojmenované fronty (named pipes), nebo přes TCP/IP na portu, který si ta služba otevře a poslouchá na něm. Nebo klidně přes textový soubor, pokud se budeš chtít za uchem drbat cizí nohou.
-
P.S. UAC je aktivní pouze pro interaktivně přihlášené uživatele.
-
Děkuji všem za reakce, bo sem občas trochu mimo.
Ale došlo mi že moje úvaha byla od začátku vadná: kdyby celá aplikace jela jako
admin, tak bych se nedostal na samba disky, protože ty jsou viditelné jen pro
uživatele který si je připojil.
A sdílené disky nastavené adminovi vyšumí (jak mám odzkoušeno) po odlášení uživatele.
Takže to asi budu pytlíkovat jako doposud.
Hrozně se mi líbilo pojmenování techniky komunikace přes stdout (a stderr) jako "drbat se za uchem cizí nohou"!
To sedí, ale budu si sugerovat, že je to moje vlastní noha :-))
-
Služba ve Windows může mít i GUI, ale myslím, že pak zase nemůže běžet s administrátorskými oprávněními.
Podle mne je jediné schůdné řešení takové, že budete mít běžnou aplikaci s GUI, vedle ní službu s administrátorským oprávněním, a ty dvě aplikace mezi sebou budou nějak komunikovat.
Tohle je podle mě správné řešení - tj. GUI + služba:
- k čemu chci přistupovat jako uživatel, to bude v GUI
- k čemu jako admin tak to bude v té službě
Ani samba pak nebude problém :D
-
Hrozně se mi líbilo pojmenování techniky komunikace přes stdout (a stderr) jako "drbat se za uchem cizí nohou"!
stdout/stderr jsem zrovna nemyslel; šlo mi o to, nastínit maximálně absurdní čistě technicky vzato funkční způsob, takže jsem opravdu měl na mysli textový soubor pohozený někam na náhodné místo do filesystému :-)
BTW v době, kdy jsem ještě chodil do školy, platilo, že pokud je to možné, dobře udělané GUI je "jen" "hezký" ksicht pro plně funkční konzolovku nebo službu, aby ji šlo automatizovat a ovládat z jakékoli jiné aplikace, včetně eventuálně uživatelem vytvořeného vlastního GUI.
-
Malo by to ísť:
http://woshub.com/how-to-disable-uac-for-specific-applications/
-
Malo by to ísť:
http://woshub.com/how-to-disable-uac-for-specific-applications/
To způsobí, že se nezobrazí UAC dialog, ale aplikace nezíská vyšší oprávnění.
-
Malo by to ísť:
http://woshub.com/how-to-disable-uac-for-specific-applications/
To způsobí, že se nezobrazí UAC dialog, ale aplikace nezíská vyšší oprávnění.
Neskúšal som to, ale za pokus to stojí. Ak to dobre chápem, uvádzajú tam, že užívateľ nezíska vyššie oprávnenia v zmysle, že by mal práva napr. na súbory, ktoré patria administrátorovi, len to deaktivuje UAC (pokiaľ viem, UAC nefunguje ako v linuxe sudo, že by to menilo užívateľa, pod ktorým spúša proces). Prečo by tam inak dávali príkad s regeditom?
Iný tip som videl, že spúštať aplikáciu automaticky cez windows scheduler po prihlásení (ak vyhovuje, že beží vždy a nezatvára sa). Je to stále jednoduchšie, ako robiť servis a komunikovať s ním.
-
Neskúšal som to, ale za pokus to stojí. Ak to dobre chápem, uvádzajú tam, že užívateľ nezíska vyššie oprávnenia v zmysle, že by mal práva napr. na súbory, ktoré patria administrátorovi, len to deaktivuje UAC (pokiaľ viem, UAC nefunguje ako v linuxe sudo, že by to menilo užívateľa, pod ktorým spúša proces). Prečo by tam inak dávali príkad s regeditom?
Ano, uživatel tím nezíská vyšší oprávnění. Má tedy smysl to používat akorát v případě, kdy uživatel nepotřebuje získávat vyšší oprávnění (protože už potřebná vyšší oprávnění z nějakého důvodu má). Příklad s regeditem je tam proto, protože na něm je hezky vidět, že na své klíče se uživatel stále dostane, ale když se pokusí editovat systémové klíče (Local Machine), nepodaří se mu to, protože nemá dostatečná oprávnění.
-
Pokud ten počítač máte pod kontrolou, je možné UAC i úplně vypnout.
https://diit.cz/clanek/windows-8-spustit-jako-admin-vse (https://diit.cz/clanek/windows-8-spustit-jako-admin-vse)