Rundll32 - függvényhívás DLL könyvtárak blog ablakokra

RUNDLL32 - parancssori segédprogram, amely célja, hogy tölteni és futtatni a funkciók a 32-bites és 64-bites DLL könyvtárak. Sokan úgy vélik, hogy ez azt jelenti, rundll32 futtatni DLL egy futtatható alkalmazást. A valóságban nincs olyan dolog, mint egy „DLL start”, mert nem futtatható a tiszta formában (például EXE). A DLL amely csak a funkciók (eljárások), ezért csak akkor működik, lehet nevezni. Ezért a meghatározása, hogy milyen rundll32.exe segédprogram futtatásához használt funkciók (eljárások) tárolt DLL.
Rundll32 lehetővé teszi a hozzáférést csak a funkciók / eljárások keretében a DLL íródtak egy bizonyos módon. Nem csak, hogy a függvények kell exportálni, így nekik is meg kell felelniük konkrét követelmények leírása a bemeneti paramétereket. Könyvtári függvények nem jelölt exportálható által működtetett rundll32 nem.

Kevesen tudják, hogy a rundll32 lehet használni a ravaszt funkciók bármilyen fájltípus épített hasonló elven a DLL könyvtárak: ActiveX elemeket kiterjesztésű .ocx vezérlőpult alkalmazásait a .cpl kiterjesztése, a sofőr a mellék .drv. Elemzése, a szabadidejében, a szerkezet ezeket a fájlokat, és hasonlítsa össze a DLL szerkezettel.

Azzal érvelt, hogy rundll32 hasznosság eredetileg belső használatra a fejlesztők az OS, hogy használják a Windows futtatásához korlátozott számú rendszer DLL-funkciót.

Érdemes odafigyelni arra, hogy a Windows Vista / 7 és újabb operációs rendszerekre, rundll32 segédprogram használata nem ajánlott, és csak akkor kapcsol be csak azért, hogy fenntartsák a kompatibilitást a régebbi alkalmazásokat.

Ennek az az oka abban rejlik, hogy a hozzáállás számos kapcsolatos problémák használatával rundll32 saját szoftver környezetben. Ahogy nélkül rundll32, kérdezed? Kiderült, a Microsoft aktívan ír különleges rendszer segédprogramok, amelyek fokozatosan felváltja a funkcionalitást a kedvenc számos szoftver funkcióit. Ezért időről időre a Windows 7 folyamatokban is megtalálja rundll32 folyamat azonban egy hasonló jelenség kevésbé. )

Az algoritmus a rundll32

Általában az eszköz egy olyan átalakító, RUNDLL32 az algoritmus a következőképpen írható le:

Hogyan látja a teljes elérési utat Start rundll32

Ha a rendszer nem látható ok hirtelen sikerült megtalálni futó folyamat rundll32, és akkor vajon, és mi, sőt, a funkcionális segédprogramot indított, akkor meg ez a teljes elérési utat start rundll32 hasznosság. A teljes indítási utat, hogy a parancssori paramétereket lehet a feladatkezelő rendszer segédprogram.
Hívja fel a „Task Manager” (Ctrl + Shift + Esc), menj a „View” menüben válassza a „Select oszlopok ..” és a görgetés lefelé a listán, lapozzunk „Command Prompt” és jelölje meg a jelölőnégyzetet, majd kattintson az OK gombra.
Az eredmény az lesz a megjelenése a fő ablak, Task Manager „parancssor” teljes vonalon Start rundll32.

Hogyan fut a dll fájlokat

32-bites és 64-bites változatban programok

A 64-bites Windows operációs rendszerek van 2 lehetőség rundll32.exe program:

  • 64 bites verziója található a% SystemRoot% \ System32 \;
  • 32 bites változata található a% SystemRoot% \ SysWOW64 \.

A 64 bites operációs rendszer betöltése a 64 bites DLL egy 64 bites verzióját rundll32.exe lehet használni. könyvtárban található% SystemRoot% \ System32 \. Ezzel szemben a 32 bites programok 64 bites operációs rendszer, hozzáfér a% SystemRoot% \ System32 \. A kompatibilitás érdekében át lesz irányítva a% SystemRoot% \ SysWOW64 \, és ennek megfelelően fogják használni a 32 bites rundll32.exe.

Példa használat rundll32

Rundll32 program futtatásához a parancssor használatával szintaxisa a következő formában:

Példaként azt javaslom, hogy szét a parancsot a applet „Területi és nyelvi beállítások” vezérlőpulton lap „formátumok”:

rundll32.exe shell32.dll, Control_RunDLL be az intl.cpl parancsot ,, 0

Amikor ezt a parancsot rundll32 hasznosság ok Control_RunDLL () függvény, amely a könyvtárban shell32.dll. és adja meg a következő paramétereket:

Létrehozásakor exportált függvények (a fenti példák, ez egy ál-név BelépésiPont) figyelembe kell venni az alábbiakat:

  1. Ahelyett, hogy egy string „BelépésiPont”, kívánatos, hogy meghatározza a tényleges függvény nevét. Megjegyezzük, hogy a „belépési pont” használt programot rundll32, nem függ ek DIIEntryPoint funkció, amely a 32 bites DLL könyvtárak a feldolgozást végzi és bejelentése csatlakoztatása és leválasztása áramlását. Ez a belépési pont a funkciót is.
  2. Funkció a belépési pont a rundll32 programban kell meghatározni, a hívási konvenciót _stdcall (C ++ alapértelmezett _stdcall attribútum használt CALLBACK érték). Ellenkező esetben az alapértelmezett fogja használni egy másik hívási konvenciót _cdecl. Ez vezet összeomlik rundll32 munkaprogram hívása után ez a funkció.

Funkció, amely a belépési pont, az alábbi paraméterekkel:

ID (fogantyú) a szülő ablak, ami általában létrehozásához használt Windows betölti a DLL-funkciót.

A parancskarakterláncot telt el a könyvtárból. Ez a sztring karakterek sorozata megszűnik a 0-ás kód.

Megjelenítési mód ablakban a kiválasztott könyvtárban. (Adatátvitel CreateProcess funkció).

Példa létrehozása exportált DLL függvény

Írtam egy példát az assembly, így nem hibáztat :) Ezen a nyelven, valahogy kifejezni gondolataikat terén programozás. Lefordítja az egészet a FASM fordítóprogram for Windows (FASMW.EXE). A DLL-én ismertetett egyetlen exportált nevezett funkció ShowErrorMessage. amely megjeleníti a hiba ablakot a megadott paraméterekkel. Testdll.asm létrehozza a fájlt, és adjuk hozzá a következő tartalommal: