Využij akce až 30 % zdarma při nákupu e-learningu. Více informací. Zároveň je tento týden sleva až 80 % na e-learning týkající se C# .NET
Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Avatar
Neaktivní uživatel:29.5.2018 20:30

Zjistic co a jak má program zapsat do soubrou .exe aby to fungovalo

Zkusil jsem: StreamReader co vypisoval to jak přečetl .exe soubor notepad++. (já vím stupidní ale co...)
googlit

Chci docílit: Vytvořit .exe aplikaci z jiné .exe aplikace. (pustím aplikaci a ona někde vygeneruje .exe aplikaci)

Odpovědět
29.5.2018 20:30
Neaktivní uživatelský účet
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Martin Dráb:29.5.2018 23:08

EXE je normální soubor dodržující určitý formát, takže pokud jej načteš do paměti a zapíšeš do jiného souboru na disk, vytvoříš tím nový EXE soubor.

Způsob "nakopíruju do souboru, co mi ukázal Notepad++" fungovat nebude, protože Nodepad(++) se bude snažit interpretovat i netisknutelné a jiné znaky, což se ne vždycky podaří. Zejména u znaků pro konce řádků (ASCII kód 13 a 10) to bude problém.

Nahoru Odpovědět
29.5.2018 23:08
2 + 2 = 5 for extremely large values of 2
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:30.5.2018 0:31

A co přesně chceš dělat? Chceš si sám umět vytvořit executable na základě čeho a proč?
Pokud tě zajímá, jak se to skládá, můžeš nastudovat zdrojáky nějakého kompilátoru a linkeru (ale to nebudeš chtít dělat, pokud k tomu nemáš hodně moc dobrý důvod).
Pokud chceš generovat nějaké jednoduché skripty, můžeš si vytvořit třeba skript v batchi a ten vyplivnout, nebo nějakém jiném skriptovacím jazyku a potom se to pokusit převést nějakou knihovnou.

Musíš si uvědomit, že .exe je binární soubor, navíc musí dodržovat spoustu pravidel z dávných dob - např. všechny soubory začínají DOSovým kódem a halvičkami, a až potom v tom je ukazatel na skutečné hlavičky, co se používají :D
Něco takového skládat nechceš...

Nahoru Odpovědět
30.5.2018 0:31
the cake is a lie
Avatar
Ondřej Štorc
Redaktor
Avatar
Odpovídá na Petr Čech
Ondřej Štorc:30.5.2018 6:57

Sorry, ujela mi ruka...

Nahoru Odpovědět
30.5.2018 6:57
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Neaktivní uživatel:30.5.2018 18:38

Tak jo konkrétněji. mám aplikaci Main vyexportovanou do .exe. Pak je aplikace Updater která má za úkol dostat update (nové .exe) mainu po internetu a tím potom nahradit Main. Ale právě nevím jak zapsat to .exe mainu. Na tohle studovat strukturu .exeček nepotřebuju ne? Jen nějak zkopírovat, poslat a pak nějak uložit :D.

Nahoru Odpovědět
30.5.2018 18:38
Neaktivní uživatelský účet
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:30.5.2018 18:43

Tak to je jednoduché, prostě to stáhneš (třeba HttpClient to umí) a prostě ty soubory připíšeš a ono to bude fungovat ;) Hlavně se vůbec nemusíš zajímat o to, co je tam za data, stejně tak dobře by to fungovalo pro film.

Nahoru Odpovědět
30.5.2018 18:43
the cake is a lie
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
nickname01
Člen
Avatar
Odpovídá na Neaktivní uživatel
nickname01:30.5.2018 19:56

Tady máš dokumentaci k HttpClient ;-)

 
Nahoru Odpovědět
30.5.2018 19:56
Avatar
Odpovídá na nickname01
Neaktivní uživatel:31.5.2018 10:18

Jo to jsem si najít dokázal... :D Až budu mít čas tak to testnu.

Nahoru Odpovědět
31.5.2018 10:18
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:2.6.2018 21:50

Tak jsem se k tomu zase dostal :D. HttpClient jsem našel ale stále stejný problém: https://ctrlv.cz/NtaS.
code:

static void Main(string[] args)
{
Task t = new Task(Download­PageAsync);
t.Start();
Console.Write­Line("Downloa­ding...");
Console.ReadLine();
}
static async void DownloadPageAsync()
{
// ... Target page.
string file = "http://downlo­ad1639.mediafi­re.com/dte13w1­gfwyg/j38rw5jjbub­x8il/Hello+wor­ld.exe";

// ... Use HttpClient.
using (HttpClient client = new HttpClient())
using (HttpResponse­Message response = await client.GetAsyn­c(file))
using (HttpContent content = response.Content)
{
// ... Read the string.
await content.ReadAs­StreamAsync();

// ... Display the result.
StreamWriter sw = new StreamWriter("e­xe.exe");
sw.Write(conten­t.ReadAsByteA­rrayAsync());
sw.Close();

}
}

Nahoru Odpovědět
2.6.2018 21:50
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:2.6.2018 21:57

Tak jsem se k tomu zase dostal :D. HttpClient jsem našel ale stále stejný problém: https://ctrlv.cz/NtaS.

code:

static void Main(string[] args)
{
Task t = new Task(Download­PageAsync);
t.Start();
Console.Write­Line("Downloa­ding...");
Console.ReadLine();
}
static async void DownloadPageAsync()
{
// ... Target page.
string file = "http://downlo­ad1639.mediafi­re.com/dte13w1­gfwyg/j38rw5jjbub­x8il/Hello+wor­ld.exe";

// ... Use HttpClient.
using (HttpClient client = new HttpClient())
using (HttpResponse­Message response = await client.GetAsyn­c(file))
using (HttpContent content = response.Content)
{
// ... Read the string.
await content.ReadAs­StreamAsync();

// ... Display the result.
StreamWriter sw = new StreamWriter("e­xe.exe");
sw.Write(conten­t.ReadAsByteA­rrayAsync());
sw.Close();

}
}Petr Čech

Nahoru Odpovědět
2.6.2018 21:57
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:4.6.2018 7:15

Missclick

Editováno 4.6.2018 7:16
Nahoru Odpovědět
4.6.2018 7:15
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:4.6.2018 17:31

using System.Net;
...
var client = new WebClient();
client.Downlo­adFile("http://s­tranka.com/sou­bor/helloWorld­.exe", "C:/exe.exe");

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
4.6.2018 17:31
Neaktivní uživatelský účet
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 12 zpráv z 12.