índice
#indice0
#indice1
#indice2
#indice3
Introducción
#indice
A partir de los tutoriales sobre como consumir un Web Service, noté que hay muchas dudas sobre como crear el directorio virtual, por esta razón me dedique a buscar información para realizar esto desde una aplicación Delphi.
Pues bien, encontré que podemos realizar esto usando la Biblioteca virtualds.tlb que se encuentra en el directorio System32 de Windows.
Esta biblioteca llamada Active Directory Services (Active DS) nos permite administrar y mantener todos los recursos de red desde una única ubicación y una de las características es que no solo nos sirve para administrar el IIS, sino para muchas otras aplicaciones como LDAP por ejemplo, en posteriores tutoriales intentaré hablar sobre otras funcionalidades de esta biblioteca.
Nota: Active Directory es una característica en Windows 2000, XP y Vista, y no está disponible para Windows 95, Windows 98, Windows Me, Windows NT 4.0, Mac OS, Mac OS X, Unix.
Les recuerdo que el ambiente de desarrollo con el que trabajo es:
- Windows XP Professional SP3
- Turbo Delphi Professional
- Internet Information Services (IIS) 5.1
Espero que este tutorial sea de ayuda para muchos e invito a todos a publicar los resultados en otros sistemas operativos.
Capítulo 1. Crear el proyecto Base
#indice
Creamos un nuevo proyecto y agregamos los siguientes componentes:
Componente ----> Propiedad Name
- TDirectoryListBox ----> dlbIIS
- TDriveComboBox ----> dcbIIS
- TEdit ----> edtAlias
- TLabel ----> Alias
- TEdit ----> edtPath
- TLabel ----> Path
- TGroupBox ----> GroupBox1
- TCheckBox ----> cbRead
- TCheckBox ----> cbScript
- TCheckBox ----> cbExecute
- TCheckBox ----> cbWrite
- TCheckBox ----> cbBrowse
- TBitBtn ----> bbtOK
- TBitBtn ----> bbtClose
He decidido que la UI se vea de esta forma, ustedes decidan como mejor les parezca.
En el siguiente capitulo veremos como importar esta biblioteca a nuestro proyecto.
Capítulo 2. La Biblioteca Active DS
#indice
Para importar la biblioteca Active DS, debemos hacer lo siguiente:
Desde el menú de Delphi:
File ---> Component ---> Import Component ---> Import a Type Library
Y presionamos Next
Seleccionamos Active DS Type Library desde la lista de bibliotecas registradas y presionamos Next.
En la siguiente pantalla debemos seleccionar la paleta de componentes donde queremos agregar esta biblioteca (he decidido no asignar nunguna en este caso) y asignamos el directorio donde se almacenará el archivo importado, lo he dejado en el valor por omisión que es la carpeta de Imports de Delphi, presionamos Next.
Agrego la unidad al proyecto y como no estoy generando el componente no debemos de instalar el paquete, en otra ocasión veremos como generar el componente para que sea reutilizado.
Presionamos Finish y con eso terminamos el proceso de importación.
Capítulo 3. Código para crear Directorio Virtual en el IIS
#indice
Ahora vamos a escribir el código que nos permitirá crear directorios virtuales, debo decir que el código lo he tomado de cnblogs.com y me he tomado la libertad de traducir sus comentarios.
Comenzaremos por agregar una función llamada ADsGetObject() de tipo HRESULT y debemos de agregar en el uses la unidad ActiveDs_TLB que importamos en el capítulo anterior y su implementación como se muestra a continuación:
delphi
uses *****, ActiveDs_TLB, *****; function ADsGetObject(const PathName: WideString; const GUID:TGUID; out I: IUnknown): HRESULT; stdcall; var frmAddVirtualDir: TfrmAddVirtualDir; implementation {$R *.dfm} function ADsGetObject; external 'ActiveDS.dll' name 'ADsGetObject';
Posteriormente agregamos el siguiente código al botón bbtOK (Crear Directorio Virtual).
delphi
procedure TfrmAddVirtualDir.bbtOKClick(Sender: TObject); var I: IADsContainer; ADs: IADs; begin if Length(Trim(edtAlias.Text))=0 then begin Application.MessageBox('Alias no puede ser Vacio','Aviso'); Exit; end; if Length(Trim(edtPath.Text))=0 then begin Application.MessageBox('Seleccione la Ruta del directorio Virtual', 'Aviso'); Exit; end; if ADsGetObject('IIS://localhost', IID_IADsContainer, IUnknown(I)) = S_Ok then begin //IIS Ha sido instalado if ADsGetObject('IIS://localhost/w3svc', IID_IADsContainer, IUnknown(I)) = S_Ok then begin //Web Server existe ADs := IADs(I.GetObject('IIsWebServer', '1')); //Acceso a los servicios if ADs.QueryInterface(IID_IADsContainer, I) = S_OK then begin //Servicios de Apoyo ADs := IADs(I.GetObject('IIsWebVirtualDir', 'Root')); //En el servidor Web para crear un directorio virtual en la raíz if ADs.QueryInterface(IID_IADsContainer, I) = S_OK then begin //Servicios de apoyo try ADs := IADs(I.Create('IIsWebVirtualDir', edtAlias.Text)); //Crear un directorio virtual para el alias (edtAlias.Text) except Application.MessageBox('El alias ya existe, por favor, elija'+ ' otro alias','Aviso'); Exit; end; //try except ADs.Put('AccessRead', cbRead.Checked); //Establecer los parámetros ADs.Put('AccessWrite', cbWrite.Checked); ADs.put('AccessScript',cbScript.Checked); ADs.Put('AccessExecute',cbExecute.Checked); ADs.put('EnableDirBrowsing',cbBrowse.Checked); ADs.Put('Path', edtPath.text); ADs.Put('AppFriendlyName', edtAlias.text); ADs.Put('DefaultDoc','Default.asp, Default.html, Default.htm, ndex.asp,'+ 'Index.html, Index.htm, Home.asp, Home.Html, Home.htm'); ADs.Put('EnableDefaultDoc',True);//Pueden abrir el archivo por defecto ADs.SetInfo; //Guardar parámetros Application.MessageBox('Directorio Virtual Creado','Felicidades'); end; end; end; end else Application.MessageBox('IIS no está instalado en su ordenador o'+ ' usted no tiene acceso a IIS','Aviso'); end;
Agregamos al evento OnChange del componente TDirectoryListBox ----> dlbIIS el código para asignar al componente Edit (edtPath) la ruta seleccionada.
delphi
procedure TfrmAddVirtualDir.dlbIISChange(Sender: TObject); begin edtPath.Text:=dlbIIS.Directory; end;
Y por último generamos el código para mostrar el directorio actual y el cierre de nuestro programa.
delphi
procedure TfrmAddVirtualDir.FormShow(Sender: TObject); begin edtPath.Text := dlbIIS.Directory; end; procedure TfrmAddVirtualDir.bbtCloseClick(Sender: TObject); begin Close; end;
Compilamos y ejecutamos nuestro proyecto y veremos que el directorio virtual ha sido creado en el IIS de nuestra máquina.
Ejecutamos nuestro programa:
Checamos nuestro IIS:
Verificamos las propiedades:
En esta parte de las propiedades, aún no encuentro como crear el punto de Inicio de nuestro Directorio Virtual, como se muestra en la siguiente imagen:
Con esto terminamos este Tutorial, esperando sea de utilidad.
Salud OS
PD. Si alguno de ustedes logra encontrar este procedimiento, le agradecería enormemente publicara la respuesta para complementar este tutorial.