Windows - Fájl indítása hiperlink segítségével

forráskód letöltése
Sok weboldalon, általában a céges intraneteken olyan hiperlinkek találhatók fájlokhoz, amelyeket a felhasználónak el kell indítania a helyi rendszerben. A nyilvánvaló biztonsági megfontolások miatt az Internet Explorer meggátolja, hogy bármely hiperlink művelet automatikusan induljon, futtatva bármit, amit letöltöttünk anélkül, hogy figyelmeztető ablakot ne mutatna. Cikkünkben ezt próbáljuk meg kikerülni, azaz figyelmeztetés nélkül alkalmazást indítani.
Ezekben az esetekben a fájlletöltés dialógusablaka nem mellőzhető semmiféle módon. Ebben benne értendő a HTML tag-ek, scriptek, WebBrowser vezérlő és a biztonsági zóna opciók hatása is.
Ezek a dialógusablakok bosszantók lehetnek. Cikkünkben kétféle módszert mutatunk be, amelyekkel elkerülhető az említett dialógusablak.
Weboldalakon hagyományosan linkeket használunk arra, hogy fájlokat indítsunk el kétféle szándékkal; vagy letölteni akarunk, vagy megnyitni. A HTML-ben nincs semmi, ami megmondaná, hogy letöltsünk, vagy indítsunk egy állományt, ezért a felhasználónak kell döntenie.
Az Internet Explorer ellenőrzi a fájl kiterjesztését, és az alapján jeleníti meg az ablakot, mivel a felhasználó a legtöbb fájltípushoz kikapcsolhatja ezt a dialógust.
Az Internet Explorer azonban tartalmaz egy erősen kódolt fájltípus listát, amelyet nem enged dialógusablak nélkül megnyitni. Ezek a kiterjesztések az általános futtatható és egyéb fájlok, amelyek veszélyt is jelenthetnek a felhasználó gépére. Az alábbi listában láthatjuk ezeket a kiterjesztéseket. (A csak IE5-el jelölt fájlok az IE5-ös verzió óta szerepelnek ebben a listában.)
EXE, COM, BAT, LNK, URL, CMD, INF, REG, ISP, BAS, PCD, MST, PIF, SCR, HLP, CHM (csak IE5), HTA (csak IE5), ASP, JS, JSE, VBS, VBE, WS, WSH
Cikkünkben valamennyi itt említett futtatható fájlra vonatkoznak az információk.
A céges intraneteken létezik egy egyszerű hiperlink alternatíva, amely az IFRAME link. Internet oldalakról nem használható ez a metódus, de az Internet Code Download linking módszer igen, amit a későbbiekben bemutatunk.
Az alapértelmezett biztonsági szinteken mindkét módszer dialógusablakot jelenít meg, de ezek vezérelhetők.
Az IFRAME linkelő technika esetében a dialógusablak megjelenik "Running a system command on this item may be unsafe...", és vezérli egy egyedi biztonsági opcióval "Launching programs and files in an IFRAME.". Az Internet Code Download linking technikánál a dialógus ablak megjelenhet, amikor látható lesz a "Do you want to install and run..." és vezérelhető egy egyedi biztonsági opcióval "Download signed ActiveX controls."
A publikus Internetes oldalak nem igénylik a felhasználóktól, hogy bármilyen biztonsági beállításokat használjanak, amikor a weboldalt megnézik. Ezzel szemben azok az oldalak, amelyek módosított biztonságúak, azt kérik, hogy a felhasználó vegye fel az oldalt a megbízott oldalak közé.
IFRAME linkelés
Ezzel a módszerrel a weblap hasznosítja az Internet Explorer tulajdonságát, az Explorer-szerű fájllista nézetet úszó frame-en belül (<IFRAME>). Kövessük ezeket a lépéseket:
  • Mozgassuk a fájlokat egy különálló szerverre, megosztásra, és a mappa a céges intraneten legyen elérhető Windows UNC (Uniform Naming Convention) segítségével.
  • Hozzunk létre egy különálló mappát minden futtatható fájlhoz, és másoljuk a fájlokat a mappákba. A könyvtárak legyenek üresek, az egyedüli futtatható fájlt kivéve.
  • Ahol egy hiperlink a fájlra mutat, helyezzük el az alábbi HTML-t:
Kattintson az ikonra, hogy elindítsa ezt a programot dialógus ablak megjelenítése nélkül:
<IFRAME SRC="\\server\share\directory"></IFRAME>
A HTML kód a mappára mutasson, ne pedig a fájlra, amely a mappában található.
A kijelölt fájl mappája megjelenik egy Explorer-stílusú fájlnézetben. Amikor a felhasználó kattint a fájlon, akkor az olyan, mintha egy Sajátgép ablakban kattintott volna rá.
Internet Code Download linkelés
Ez egy bonyolultabb megoldás, a weblap megkerüli a szokásos fájlletöltő folyamatot az Internet Code Download-ot használva.
Az Internet Code Download az Internet Explorer tulajdonsága, amely lehetővé teszi, hogy a weblapok automatikusan letöltsenek ActiveX vezérlőket és egyéb natív kód-objektumokat. Az Internet Code Download segítségével letöltött fájlok átjutnak az ActiveX biztonsági kereten, amely vezérelhető biztonsági opciók segítségével.
Ha a "futtatható fájl" nem egy aláírható PE (EXE), mint egy .bat fájl, akkor a fájlt .cab fájlba kell csomagolni egy INF segítségével a következő módon:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
file.zzz=file.zzz
[file.zzz]
clsid={15589FA1-C456-11CE-BF01-00AA0055595A}
FileVersion=1,0,0,0
hook=zzzinstaller
[zzzinstaller]
run=%EXTRACT_DIR%\file.zzz
Cseréljük ki a File.zzz-t a futtatni kívánt fájlra.
Bizonyosodjunk meg arról, hogy az EXE (vagy CAB) aláírt kódú. Ha az EXE nem aláírt, akkor ez megtehető a CryptoAPI Authenticode Code Signing eszközökkel.
Használjuk a mellékelt (execlinks.html) példalapot segítségképpen a linkhez.