A mellékelt példában elhelyeztünk a Form-on egy TWebBrowser kontrolt, melybe – miután létrehoztuk a Sample mappára mutató virtuális könyvtárat – betölthetjük a Sample.htm állományt.
A projekthez mellékeltünk két .js kiterjesztésű script állományt, melyek közül a CreateVD.js a virtuális könyvtár létrehozását, míg a DeleteVD.js annak törlését végzi el. A példaalkalmazásban a LÉTREHOZÁS gombbal hozhatjuk létre a Sample fizikai mappára mutató virtuális mappát, a TÖRLÉS gombbal törölhetjük azt.
Ezeket a műveleteket a CreateProcess metódussal végezhetjük el.
CreateProcess(
nil,
PChar('wscript.exe CreateVD.js'),
nil,
nil,
false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo)
...
A létrehozás után az ELLENŐRZÉS gombbal vizsgálhatjuk meg, hogy létre jött-e a virtuális mappa, vagy sem. Ekkor elküldünk egy kérést a Sample.htm erőforrásra.
Url := 'http://localhost/Sample/Sample.htm';
WebBrowser1.Navigate2(Url, Flags, TargetFrameName, PostData, Headers);
nmhttp1.Get(url);
Az adott weblap létezésének ellenőrzését a TNNHTTP komponens végzi. Az IE kontrolba a Navigate2 metódussal töltjük be a kért URL-el kijelölt HTML adatfolyamot.
Virtuális mappa létrehozása
Mivel a Sample mappa a Script-tel azonos mappában található, elegendő a következőképpen megadnunk az elérési útvonalat:
Példányosítjuk a FileSystemObject objektumot, hogy a fizikai mappa tulajdonságait elérhessük.
var fso = new ActiveXObject("Scripting.FileSystemObject");
Elérhetjük egy objektum segítségével az IIS Web-szerver gyökérmappáját, melyben a létrehozott virtuális mappák vannak.
objIIS = GetObject("IIS://localhost/W3SVC/1/Root");
A GetFolder metódussal objektummá alakítjuk a fenti elérési útvonalat:
dirPath = fso.GetFolder(path).Path;
Sample néven bejegyzünk egy virtuális mappát, mely majd a fizikai mappánkra mutat.
dirObj = objIIS.Create("IISWebVirtualDir","Sample");
Ezt követően megadjuk a mappa legfontosabb jellemzőit. A fizikai elérési utat:
Beállítjuk a hozzáférési lehetőségeket.
dirObj.AccessRead = true;
dirObj.AccessWrite = true;
dirObj.AccessScript = true;
dirObj.AccessExecute = true;
Engedélyezzük a névtelen hozzáférést.
dirObj.AuthAnonymous = true;
Elkészítjük a bejegyzést.
Majd elmentjük a változásokat.
A mappa létrejöttét ellenőrizhetjük az IIS Web-szerver adminisztrációs programjában is.
A Felügyeleti eszközökben indítsuk el az Internet Information Services alkalmazást, és keressük meg az alapértelmezett webhely csomópontjában a Sample mappát.
Virtuális mappa törlése
A mappa törlése előtt megvizsgáljuk, hogy létezik-e a virtuális könyvtár. Ekkor a gyökérhez hozzáfűzzük a mappa nevét.
objIIS = GetObject("IIS://localhost/W3SVC/1/Root/" + path);
Ha a művelet nem okozott hibát, akkor a mappa létezik és eltávolítható. Ekkor elérjük a gyökérmappát, majd töröljük azt a Delete metódussal.
objIIS = GetObject("IIS://localhost/W3SVC/1/Root");
objIIS.Delete("IISWebVirtualDir","Sample");