Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: C# kopírování souborů jinak než pomocí File.Copy

Aktivity
Avatar
Josef Snopek
Člen
Avatar
Josef Snopek:30.6.2018 18:36

Zdravím všechny, začínám s programování v C# a řeším následující problém: má aplikace kopíruje soubory pomocí třídy File.Copy. Problém nastává v případě antiviru s whitelistem. Po kopírování nelze soubor spustit jelikož se netváří jako zkopírovaný mou aplikací a je tudíž zablokován (pravděpodobně proto ze je koupirovan prostřednictvím Windows). Pokud udělám totéž z jinou aplikaci typu Free Commander nebo Total Commander vše funguje. Jinými slovy hledám způsob, jak kopírovat soubor pod mou aplikaci, aby byl soubor automaticky přidán na whitelist.

Zkusil jsem: Kopírovat pomoci File.Copy, ZIPovat či přejmenovat.

Chci docílit: Aby byl soubor zkopírován procesem moji aplikace a tudíž bran antivirem jako vytvořeny mou aplikací.
Děkuji předem za jakýkoliv typ, jak můj problém vyřešit.

 
Odpovědět
30.6.2018 18:36
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:1.7.2018 10:23

Hele, řeknu ti k tomu asi tolik:
Ty programuješ v C#. To je nejsprávnější přístup k funkcím Windows, jaký snad jde najít. Myslím tím to, že manipuluje-li tvá aplikace např. právě se souborovým systémem, neexistuje lepší způsob, než přes třídy File a Directory.

File.Copy() (což je metoda, ne třída, pozor na to) je tedy nejsprávnější ze všech možných způsobů, jakými může programátor kopírovat soubory v systému Windows.

Netuším co je to za antivir, proč ti dělá potíže, ani jak funguje jeho file whitelist systém, ale věř, že to nemá nic společného s použitím File.Copy().

Doporučuji zapátrat na stránkách či fórech výrobce antiviru, proč se ti tohle děje, popř. zkus vymyslet a zkusit něco sám - nemá antivirus nějaký štít, který kontroluje potenciálně škodlivý - rozuměj neznámý - software? Pokud ano, budeš muset svůj program zřejmě přidat na nějaký whitelist tohoto antiviru, nebo tuto ochranu vypnout.

Hodně štěstí :)

Nahoru Odpovědět
1.7.2018 10:23
Programátor je stroj k převodu kávy na kód.
Avatar
Josef Snopek
Člen
Avatar
Odpovídá na krepsy3
Josef Snopek:1.7.2018 20:34

Děkuji a cením si odpovědi a lepšího popsání. Nicméně antivirus funguje správně a jak očekávám (nechci jej vypnout). Moje aplikace na whitelistu je, ale kopírování je provedeno přes Windows a tudíž blokováno. Pokud by nebylo, tak i ostatní aplikace mohou kopírovat vše. Hledám tedy jiné řešení, jak kopírovat soubory, tak aby se tváříli, jako vytvořené mojí aplikací. Třeba někdo poradí.

 
Nahoru Odpovědět
1.7.2018 20:34
Avatar
jiri.sada
Tvůrce
Avatar
jiri.sada:1.7.2018 20:54

co takhle soubor otevřít, přečíst třeba jeden bajt, smazat a zase zapsat, to by nepřimělo tvůj antivir považovat ten soubor za vytvořený tvojí aplikací?

 
Nahoru Odpovědět
1.7.2018 20:54
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:1.7.2018 21:52

Já ale netuším, jak ten antivir pracuje... co si o těch souborech přesně myslí?

Nahoru Odpovědět
1.7.2018 21:52
Programátor je stroj k převodu kávy na kód.
Avatar
jiri.sada
Tvůrce
Avatar
Odpovídá na krepsy3
jiri.sada:1.7.2018 23:51

jak bych to měl vědět? xD Jen typuji

 
Nahoru Odpovědět
1.7.2018 23:51
Avatar
krepsy3
Tvůrce
Avatar
Nahoru Odpovědět
2.7.2018 1:05
Programátor je stroj k převodu kávy na kód.
Avatar
Josef Snopek
Člen
Avatar
Odpovídá na jiri.sada
Josef Snopek:2.7.2018 19:14

To by samozřejmě vyřešilo problém, ale nevím jestli je optimální měnit byť 1bit v nějakém oficiálním softwaru

 
Nahoru Odpovědět
2.7.2018 19:14
Avatar
Josef Snopek
Člen
Avatar
Odpovídá na krepsy3
Josef Snopek:2.7.2018 19:18

Hlavní je ze potřebuji, aby se soubor tvářil jako vytvořeny mou aplikaci a tudíž se zapsal na whitelist a mohl by být spuštěn. Má aplikace je na whitelistu a muže vytvořit jakýkoliv soubor, který nebude následně blokován. Není důležité jak antivir pracuje... ale jestli taková možnost v C# existuje?

 
Nahoru Odpovědět
2.7.2018 19:18
Avatar
HONZ4
Člen
Avatar
Odpovídá na Josef Snopek
HONZ4:2.7.2018 21:09

Já sice nechápu v čem by měl být problém. File.Copy používám bez problémů na počítačích s Eset, Avast, ani MS antivirem to nic nehlásí. Ty jsi typ antiviru neuvedl. Tím pádem to jak funguje whitelist u tvého tajného antiviru nevím, a zjišťovat se mi to nechce. Tak nevím jestli by ti třeba nepomohlo vytvořit kopii svým způsobem, např. pomocí BinaryReaderu a BinaryWriteru. Ale spíš bych typoval, že problém bude někde jinde.

To jak soubory kopíruješ, by antivir nemělo zajímat, jen to, co, kam, možná i to, zda je tvá aplikace digitálně podepsaná.

Asi by neškodilo u vést o jaký antivir jde, o jaké typy souborů, kam a odkud je kopíruješ, co přesně to hlásí apd.

 
Nahoru Odpovědět
2.7.2018 21:09
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá na HONZ4
krepsy3:3.7.2018 0:11

Přesně jak říkáš. Já jsem se z něj tak trochu snažil dostat, co je to za antivir.

Důležité je to "tvářil se jako vytvořený mou aplikací". Windows nic takového nemá, vlastníkem vytvářených souborů je přihlášený uživatel. To znamená jednu věc: Ten antivir, ať už to dělá jakkoli, musí nějak špehovat chování aplikací, a tudíž i to, jak nakládají se soubory.

To, že tvá aplikace použije ke kopírování zcela standardní metody Windowsů by nemělo zasahovat do chodu antiviru. A do této kategorie patří i File.Copy(), a jestli jí ten antivir "nedetekuje" (či co kýho šlaka), je to chyba antiviru.

Obrátil bych se tedy na podporu či diskuzní fóra výrobce antiviru, případně bych zagooglil, jistě nejsi jediný, kdo toto kdy řešil (pakliže ano, problém je kdesi mezi židlí a monitorem :D )

Nahoru Odpovědět
3.7.2018 0:11
Programátor je stroj k převodu kávy na kód.
Avatar
Josef Snopek
Člen
Avatar
Odpovídá na krepsy3
Josef Snopek:3.7.2018 18:48

Nejedna se o klasicky přístup antiviru, kdy se skenuje každá aplikace či kus kódu a porovnává s databází všech viru. Ale jedna se o antivirus na bázi WHITELISTU, tedy do průmyslového prostředí, tak aby se nesnižoval výkon PC. Pokud je pro aplikaci (tedy mnou napsaná) vytvořeno pravidlo, muže tato aplikace vytvářet soubory, pracovat s knihovnami, které následně nejsou blokovány a mohou být také spuštěny (to se bohužel po použití metody File.Copy neděje. Tím bych chtěl ukončit diskuzi o antiviru a poprosit, jestli existuje nějaké jiné řešení pro kopírování souboru než File.Copy? U aplikaci typu Total Commander nebo Free Commander vše funguje... ale potřebuji trochu jiné řešení. Nějaký programátorský nápad?

 
Nahoru Odpovědět
3.7.2018 18:48
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá na Josef Snopek
krepsy3:3.7.2018 19:43

Ono je ale ŠPATNĚ používat cokoli jiného, než File.Copy(), už to pochop! Programátorský nápad už ti tu někdo dával - proměnit jeden bit tam a zpět po zkopírování.

A btw. - total cmd používá taky tu stejnou funkci Windows, která je v .NETu zprostředkovaná metodou File.Copy. Jistě na tvůj problém existuje jiné řešení, a už 2x jsem ti psal, ať pohledáš na podpoře/fórech/go­oglu.

Když ani nevíme, co je to za antivir, těžko ti poradíme... On nějak funguje, a to jak funguje je možné si zjistit, a přizpůsobit se tomu! Safra

Nahoru Odpovědět
3.7.2018 19:43
Programátor je stroj k převodu kávy na kód.
Avatar
HONZ4
Člen
Avatar
Odpovídá na Josef Snopek
HONZ4:3.7.2018 20:31

A překopírovat práva jsi zkoušel?

File.Copy(src_filename, des_filename);

FileInfo s_file = new FileInfo(src_filename);
FileInfo d_file = new FileInfo(des_filename);
System.Security.AccessControl.FileSecurity fse = s_file.GetAccessControl();
fse.SetAccessRuleProtection(true, true);
d_file.SetAccessControl(fse);

Zkoušel jsi něco s toho co jsme tu psali?

Editováno 3.7.2018 20:33
 
Nahoru Odpovědět
3.7.2018 20:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.