índiceIntroducciónCapítulo 1. Crear el proyecto BaseCapítulo 2. Importar la Biblioteca Active DSCapítulo 3. Código para crear Directorio Virtual en el IIS
IntroducciónRegresar al índice
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 BaseRegresar al índice
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 DSRegresar al índice
Para importar la biblioteca
Active DS, debemos hacer lo siguiente:
Desde el menú de Delphi:
File ---> Component ---> Import Component ---> Import a Type LibraryY presionamos
NextSeleccionamos
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 IISRegresar al índice
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:
[/list]
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).
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.
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.
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.