[VB] Operovanie s aplikaciou 'before user logon'
Napsal: 30. 12. 2018 00:28
Zdravim,
pre firmu, kde pracujem som napisal launcher vo visual basicu. v IT time mame spravenych viac projektov v pythone a potrebujeme ich spustat pri starte systemu. Momentalne je ich cca 10, bude ich daleko viac. Kedze firemne politiky su take, ze pocitace sa obcas restartnu, ci uz kvoli windows updatom, alebo kvoli firemnym updatom, alebo kvoli comukolvek, aj nepredvidanemu (napriklad pri vypadku elektriny), bolo ziaduce, aby sme zachovali nase projekty zive, aj ked sa nebudeme moct o ne fyzicky postarat (napriklad ak sa takato udalost udeje cez vikend, alebo kedykolvek mimo pracovneho casu). Moduly treba spustat so vzajomnym casovym oneskorenim (cize povedzme modul B musi byt spusteny az po module A, dajme tomu 20 sekund). Toto vsetko riesi moj launcher. Aby sa spustal korektne a vzdy, tak som mu vytvoril task v task scheduleri. dal som mu vlastnosti 'Run whether user is logged on or not', a tiez trigger 'On startup', aby som mal zabezpecene, aby sa launcher spustil vzdy, dokonca aj bez toho, aby sa musel nalogovat akykolvek user.
Potialto je to vsetko okay, launcher bezi, spusta moduly, robi backupy a vlastne robi vsetko co ma.
A teraz moj problem:
kedze sa launcher spusti pred lognutim usera, spusta ho systemovy svchost. tento ho vsak spusti tak, ze je nemanipulovatelny, a tiez vsetky moduly, ktore spusti. v praxi to vyzera tak, ze ked sa pozriem do process managera, tak vidim, ze mam spusteny launcher a pod nim spustu child processov, ktore spustil. to je okay. ale so ziadnym procesom nemozem nijak manipulovat: nevidim okno ziadneho procesu, tym padom nevidim konzoly, neviem ho minimalizovat, neviem process korektne zavriet, iba ho zabit cez task manager. to sa tyka jednak launchera, a jednak vsetkych procesov, ktore spusti.
Nakoniec otazka:
akym sposobom by som vedel spustit launcher (a nasledne aj vsetky aplikacie, ktore on sam spusta)? samozrejme tak, aby som vedel s nimi manipulovat, pri zachovani vlastnosti, ktore som definoval vyssie - cize MUSI sa spustit pred lognutim usera, MUSI sa spustit so startom systemu.
launcher ako taky je v podsatte 'mission accomplished' - robi to co ma a vtedy ked ma. avsak manipulacia s nim a s aplikaciami nim spustenymi je - mierne povedane - 'opruz', kedze ak nieco chcem niekde robit, musim launcher jednoducho zabit a spustit nanovo. a to nie je ani profesionalne, ani elegantne, ani pohodlne
ma niekto nejaky hint, prosim?
pre firmu, kde pracujem som napisal launcher vo visual basicu. v IT time mame spravenych viac projektov v pythone a potrebujeme ich spustat pri starte systemu. Momentalne je ich cca 10, bude ich daleko viac. Kedze firemne politiky su take, ze pocitace sa obcas restartnu, ci uz kvoli windows updatom, alebo kvoli firemnym updatom, alebo kvoli comukolvek, aj nepredvidanemu (napriklad pri vypadku elektriny), bolo ziaduce, aby sme zachovali nase projekty zive, aj ked sa nebudeme moct o ne fyzicky postarat (napriklad ak sa takato udalost udeje cez vikend, alebo kedykolvek mimo pracovneho casu). Moduly treba spustat so vzajomnym casovym oneskorenim (cize povedzme modul B musi byt spusteny az po module A, dajme tomu 20 sekund). Toto vsetko riesi moj launcher. Aby sa spustal korektne a vzdy, tak som mu vytvoril task v task scheduleri. dal som mu vlastnosti 'Run whether user is logged on or not', a tiez trigger 'On startup', aby som mal zabezpecene, aby sa launcher spustil vzdy, dokonca aj bez toho, aby sa musel nalogovat akykolvek user.
Potialto je to vsetko okay, launcher bezi, spusta moduly, robi backupy a vlastne robi vsetko co ma.
A teraz moj problem:
kedze sa launcher spusti pred lognutim usera, spusta ho systemovy svchost. tento ho vsak spusti tak, ze je nemanipulovatelny, a tiez vsetky moduly, ktore spusti. v praxi to vyzera tak, ze ked sa pozriem do process managera, tak vidim, ze mam spusteny launcher a pod nim spustu child processov, ktore spustil. to je okay. ale so ziadnym procesom nemozem nijak manipulovat: nevidim okno ziadneho procesu, tym padom nevidim konzoly, neviem ho minimalizovat, neviem process korektne zavriet, iba ho zabit cez task manager. to sa tyka jednak launchera, a jednak vsetkych procesov, ktore spusti.
Nakoniec otazka:
akym sposobom by som vedel spustit launcher (a nasledne aj vsetky aplikacie, ktore on sam spusta)? samozrejme tak, aby som vedel s nimi manipulovat, pri zachovani vlastnosti, ktore som definoval vyssie - cize MUSI sa spustit pred lognutim usera, MUSI sa spustit so startom systemu.
launcher ako taky je v podsatte 'mission accomplished' - robi to co ma a vtedy ked ma. avsak manipulacia s nim a s aplikaciami nim spustenymi je - mierne povedane - 'opruz', kedze ak nieco chcem niekde robit, musim launcher jednoducho zabit a spustit nanovo. a to nie je ani profesionalne, ani elegantne, ani pohodlne
ma niekto nejaky hint, prosim?