Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Jak skrýt běh programu před ostatními programy?

Intri (3490)|4.3.2008 19:12
Zdravím.

Asi se všichni setkali s klasickou hláškou při spuštění programu, že tento program již běží. Neví někdo, jak takto ošetřený program doopravdy spustit na jednom systému dvakrát? Nedal by se už běžící program nějak ručně skrýt před ostatními programy nebo jakkoliv jinak donutit program, aby na jednom PC běžel dvakrát zároveň ( kromě virtualizace )?
Styryx (351)|5.3.2008 15:22
No, tyhle věci se většinou dělají přes mutex (tj. hledat jméno běžícího procesu nebo dokonce jenom okna by od programátora byl hodně naivní a hlavně zbytečně složitej přístup, nehledě na to, že by to pak moh zablokovat úplně jinej program kterej bude mít jenom stejný jméno anebo by to naopak bylo možný obejít tím že to zkopíruju pod jiný jméno a spustim znova) - takže pokud je to udělaný správně přes mutex to asi moc snadno obejít nepude. Jedině to zkusit spustit jako Run-As pod jiným uživatelem, což by někdy mohlo jít. (ale teď jsem to ověřoval s WinCmd a tam to třeba nejde, tj. to dokáže zdetekovat i z jinýho uživatele, možná používá kombinaci mutex + název okna)

// EDIT: Tak jsem pohledal protože mě to samotnýho zajímalo a podle informací co jsem našel je mutex (pojmenovaný - named) system-wide, takže neni potřeba detekovat cokoliv dalšího a mutex je zdá se spolehlivá ochrana proti vícenásobnýmu spuštění na úrovni systému (tj. nepude to ani z jinýho uživatele ani nijak jinak) - takže bych řek že neexistuje způsob, jak to obejít (pokud je to napsaný přes mutex, což je standardně používaná záležitost)