Vánoční nadílka Vánoční nadílka
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací

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

C# .NET .NET (C# a Visual Basic) C# kopírování souborů jinak než pomocí File.Copy American English version English version

Aktivity (3)
Avatar
Josef Snopek
Člen
Avatar
Josef Snopek:30. června 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. června 18:36
Avatar
krepsy3
Redaktor
Avatar
krepsy3:1. července 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  +2 1. července 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. července 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. července 20:34
Avatar
jiri.sada
Redaktor
Avatar
jiri.sada:1. července 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 1. července 20:54
Avatar
krepsy3
Redaktor
Avatar
krepsy3:1. července 21:52

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

Nahoru Odpovědět 1. července 21:52
Programátor je stroj k převodu kávy na kód.
Avatar
jiri.sada
Redaktor
Avatar
Odpovídá na krepsy3
jiri.sada:1. července 23:51

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

 
Nahoru Odpovědět 1. července 23:51
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na jiri.sada
krepsy3:2. července 1:05

Já se ptal Josef Snopek :D :D

Nahoru Odpovědět 2. července 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. července 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. července 19:14
Avatar
Josef Snopek
Člen
Avatar
Odpovídá na krepsy3
Josef Snopek:2. července 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. července 19:18
Avatar
HONZ4
Člen
Avatar
Odpovídá na Josef Snopek
HONZ4:2. července 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  +1 2. července 21:09
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na HONZ4
krepsy3:3. července 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. července 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. července 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. července 18:48
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Josef Snopek
krepsy3:3. července 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  +1 3. července 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. července 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. července 20:33
 
Nahoru Odpovědět  +1 3. července 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.