Forum » Programiranje » [.NET] Kaj se zgodi ce pozenes exe brez frameworka?
[.NET] Kaj se zgodi ce pozenes exe brez frameworka?
fiction ::
OK, stekam da mora .NET program laufati znotraj navideznega stroja.
Ampak glede na to, da je assembly, ki ga dobis, ce recimo
skompajlas nek "Hello world" program cisto navaden PE program, ki
ima kolikor sem bral se nek dodaten CLR header. Zanima me kaj
se zgodi, ce tak program skopiras na racunalnik, ki nima namescenega
.NET frameworka in ga tam pozenes?
Se bo zadeva sesula, izpisala warning v stilu tistega starega
"This programme cannot be run in DOS mode" ali se samo takoj nehala izvajati?
Kako sploh tak executable izgleda - mislim v .text sectionu potem ni nic
strojne kode, ampak je vsa CIL koda v CLR delu ali je kar lepo namesto
x86 ukazev tam ta vmesna koda?
Nimam nikjer racunalnika brez frameworka, da bi poizkusil.
Ampak glede na to, da je assembly, ki ga dobis, ce recimo
skompajlas nek "Hello world" program cisto navaden PE program, ki
ima kolikor sem bral se nek dodaten CLR header. Zanima me kaj
se zgodi, ce tak program skopiras na racunalnik, ki nima namescenega
.NET frameworka in ga tam pozenes?
Se bo zadeva sesula, izpisala warning v stilu tistega starega
"This programme cannot be run in DOS mode" ali se samo takoj nehala izvajati?
Kako sploh tak executable izgleda - mislim v .text sectionu potem ni nic
strojne kode, ampak je vsa CIL koda v CLR delu ali je kar lepo namesto
x86 ukazev tam ta vmesna koda?
Nimam nikjer racunalnika brez frameworka, da bi poizkusil.
fiction ::
Sem ze nasel odgovor:
Vsak .NET program ima kot import mscoree.dll (ki se nahaja v %windir%/system32).
Ko se mapirajo funkcije v naslovni prostor procesa, se poklice _CorExeMain,
ki dejansko vzpostavi CLR in potem poskrbi za ves magic.
Po malo Googlanja sem nasel tudi: http://support.microsoft.com/kb/316091
Torej .exe program na masini brez .NET frameworka, bo v principu rekel
samo da ne najde mscoree.dll, nima pa vkljucenega nobenega stuba, ki bi izpisal
da ni .NET frameworka (in kako naj si ga clovek namesti).
Dobro pa je, da se program kljub temu ne bo nekontrolirano sesul.
Vsak .NET program ima kot import mscoree.dll (ki se nahaja v %windir%/system32).
Ko se mapirajo funkcije v naslovni prostor procesa, se poklice _CorExeMain,
ki dejansko vzpostavi CLR in potem poskrbi za ves magic.
Po malo Googlanja sem nasel tudi: http://support.microsoft.com/kb/316091
Torej .exe program na masini brez .NET frameworka, bo v principu rekel
samo da ne najde mscoree.dll, nima pa vkljucenega nobenega stuba, ki bi izpisal
da ni .NET frameworka (in kako naj si ga clovek namesti).
Dobro pa je, da se program kljub temu ne bo nekontrolirano sesul.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Crashanje programovOddelek: Pomoč in nasveti | 986 (779) | kratos |
» | VS 2005 C++ pa ne dela brez NET frameworkaOddelek: Programiranje | 1237 (1085) | BlueRunner |
» | [c++] prenosljivostOddelek: Programiranje | 1720 (1535) | Celeborn |
» | ATIOddelek: Pomoč in nasveti | 965 (852) | Toomy |
» | Delovanje aplikacije napisane v C# na drugih računalnikihOddelek: Programiranje | 989 (769) | darkolord |