Diskuze: C# kopírování souborů jinak než pomocí File.Copy
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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í
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í.
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
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?
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.
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 )
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?
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/googlu.
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
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?
Zobrazeno 14 zpráv z 14.