Comunidad Delphiaccess

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Noticias y Eventos:




Autor Tema: Como crear un Directorio Virtual en el IIS con Delphi Win32  (Leído 1441 veces)

0 Usuarios y 1 Visitante están viendo este tema.

« en: 26 de Mayo de 2009, 14:14:42 »
En línea

egostar

  • Administrador
  • ******
  • Calificaciones: +186/-6
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 5,415
  • Gracias
  • -Dados: 255
  • -Recibidos: 153
Como crear un Directorio Virtual en el IIS con Delphi Win32
« en: 26 de Mayo de 2009, 14:14:42 »
    índice

    Introducción
    Capí­tulo 1. Crear el proyecto Base
    Capí­tulo 2. Importar la Biblioteca Active DS
    Capí­tulo 3. Código para crear Directorio Virtual en el IIS


    Introducción
    Regresar 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 Base
    Regresar 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 DS
    Regresar al í­ndice

    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
    Regresar 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]
    Código: [Seleccionar]
    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).

    Código: [Seleccionar]
    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.

    Código: [Seleccionar]
    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.

    Código: [Seleccionar]
    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.

    "Nunca interrumpas a tu enemigo cuando está cometiendo un error."

    - Napoleon Bonaparte


     


     


    Página generada en 1.759 segundos con 29 consultas.