<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://windowstecnico.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Técnico : Windows Server 2008, Desarrollo</title><link>http://windowstecnico.com/archive/tags/Windows+Server+2008/Desarrollo/default.aspx</link><description>Etiquetas: Windows Server 2008, Desarrollo</description><dc:language /><generator>CommunityServer 2008.5 (Build: 30929.2835)</generator><item><title>Desarrollo de un módulo de seguridad para Microsoft Server 2008/2008 R2 e IIS7/7.5 (Parte II)</title><link>http://windowstecnico.com/archive/2010/04/20/desarrollo-de-un-m-243-dulo-de-seguridad-para-microsoft-server-2008-2008-r2-e-iis7-7-5-parte-ii.aspx</link><pubDate>Tue, 20 Apr 2010 10:09:11 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:2296</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=2296</wfw:commentRss><comments>http://windowstecnico.com/archive/2010/04/20/desarrollo-de-un-m-243-dulo-de-seguridad-para-microsoft-server-2008-2008-r2-e-iis7-7-5-parte-ii.aspx#comments</comments><description>&lt;p align="justify"&gt;Buenas a todos, continuando con la cadena de post sobre desarrollo de un módulo de seguridad para IIS7/7.5 hoy vamos a continuar explicando la arquitectura del sistema. &lt;/p&gt;  &lt;p align="justify"&gt;Nuestro objetivo en el ejemplo que os contamos será evitar que las inyecciones SQL que pueda utilizar un usuario malicioso para robar datos o penetrar en nuestro sistema, lleguen hasta la base de datos, protegiéndola de esta manera de dos posibles problemas, que puedan estar mal programadas las consultas a la base de datos y se pueda inyectar código SQL en la misma y protegiéndola de posibles ataques automatizados que podrían ralentizar su funcionamiento, frenando dichos ataques desde el módulo de seguridad instalado en el servidor web, el cual siempre es mas eficiente que la BBDD y soportará de mejor manera la sobrecarga del sistema &lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Para probar el módulo de seguridad vamos a simular un pequeño servicio web que desarrollaremos en ASP.NET. A continuación se muestra un resumen de las partes de las que se compondrá nuestro sistema:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Servicio Web Excel:&lt;/b&gt; Servicio web implementado en ASP.NET que simula una hoja de Excel, en la que los usuarios registrados desde su navegador podrán almacenar y recuperar datos en una tabla que se almacenará en una base de datos.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Metaservicio XML:&lt;/b&gt; Servicio Web que contendrá patrones de ataque que un hacker puede utilizar para vulnerar una base de datos. Este servicio debería ser actualizado regularmente para mantener la fortificación del sistema.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Módulo de Seguridad:&lt;/b&gt; Software instalado en el servidor web que colabora en las labores de protección de la Base de Datos filtrando las peticiones maliciosas.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Base de datos&lt;/b&gt;: Base de datos utilizada para almacenar las tablas del Servicio Web Excel y los datos de autenticación de los usuarios en el sistema.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;El diagrama del sistema completo se muestra en la figura 1. Se basa en la idea de controlar desde el servidor web los accesos a una base de datos realizados por los usuarios, sin que lleguen a la base de datos, para evitar poner en peligro a la misma. &lt;/p&gt;  &lt;p align="justify"&gt;Para lograr filtrar las peticiones maliciosas antes de que lleguen a la base de datos queremos desarrollar un módulo de seguridad que se instalará en el servidor web. Este módulo se encargará de filtrar todos los contenidos de las peticiones realizadas por los usuarios al servidor. &lt;/p&gt;  &lt;p align="justify"&gt;Durante la etapa de filtrado, el módulo de seguridad comparará los patrones de ataque utilizados hasta la actualidad por hackers, obteniéndolos de un Metaservicio implementado en XML, con el contenido de las peticiones web, buscando posibles ataques a la base de datos. Obviamente no se han añadido todas las posibles inyecciones que existen, labor que sería prácticamente imposible, pero si algunas importantes para desarrollar el ejemplo. La eficiencia de los resultados en la detección dependerá en gran medida no solo de tener una base de datos de inyecciones bien actualizado, sino de la pericia del algoritmo desarrollado en el módulo, que mediante expresiones formales u otras técnicas, permita variar en gran medida las inyecciones contenidas en el Metaservicio XML para detectar las SQL Injections, pero sin filtrar otras peticiones que no conllevan ningún peligro.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_c6EYhkUKGik/S74xkmmgf7I/AAAAAAAACw4/aHHW017L2u0/s1600-h/image%5B6%5D.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_c6EYhkUKGik/S74xl4NW1hI/AAAAAAAACw8/B__jopsUMZk/image_thumb%5B4%5D.png?imgmax=800" width="630" height="447" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;Figura 1: Sistema de securización basado en la implementación de un módulo de seguridad&lt;/p&gt;  &lt;p align="justify"&gt;&lt;/p&gt;  &lt;p&gt; En el próximo post comenzaremos el desarrollo del sistema, programando el Metaservicio XML e instalándolo en nuestro IIS.&lt;/p&gt;  &lt;p&gt;saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=2296" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://windowstecnico.com/archive/tags/Internet/default.aspx">Internet</category><category domain="http://windowstecnico.com/archive/tags/Seguridad/default.aspx">Seguridad</category><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://windowstecnico.com/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://windowstecnico.com/archive/tags/IIS7.5/default.aspx">IIS7.5</category><category domain="http://windowstecnico.com/archive/tags/Microsoft+Server+2008+R2/default.aspx">Microsoft Server 2008 R2</category></item><item><title>Creación e instalación de módulos para Internet Information Services 7 (parte II)</title><link>http://windowstecnico.com/archive/2009/10/30/creaci-243-n-e-instalaci-243-n-de-m-243-dulos-para-internet-information-services-7-parte-ii.aspx</link><pubDate>Fri, 30 Oct 2009 12:24:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:1158</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=1158</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/10/30/creaci-243-n-e-instalaci-243-n-de-m-243-dulos-para-internet-information-services-7-parte-ii.aspx#comments</comments><description>&lt;p align="justify"&gt;En el post de hoy vamos a continuar con la cadena de post en los que voy a explicaros los aspectos b&amp;aacute;sicos sobre la programaci&amp;oacute;n de m&amp;oacute;dulos para IIS7, que comenzamos el pasado d&amp;iacute;a explicando que era IIS7 y comentando el lenguaje y el entorno de programaci&amp;oacute;n necesarios para el desarrollo:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.windowstecnico.com/archive/2009/10/27/creaci-243-n-e-instalaci-243-n-de-m-243-dulos-para-internet-information-services-7-parte-i.aspx"&gt;http://www.windowstecnico.com/archive/2009/10/27/creaci-243-n-e-instalaci-243-n-de-m-243-dulos-para-internet-information-services-7-parte-i.aspx&lt;/a&gt;&lt;a href="http://elblogdecalles.blogspot.com/2009/06/programacion-de-modulos-para-iis7-i-de.html"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Tras conocer un poco mas sobre el entorno, el siguiente paso ser&amp;aacute; plantearnos: &amp;iquest;Qu&amp;eacute; queremos hacer con un m&amp;oacute;dulo en el IIS?. Para aclararos un poco mas esta pregunta os voy a describir los dos tipos de m&amp;oacute;dulos que podemos programar en IIS7:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;M&amp;oacute;dulos de IIS7&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En IIS7 podremos instalar 2 tipos de m&amp;oacute;dulos programados por nosotros, en primer lugar podremos crear m&amp;oacute;dulos gr&amp;aacute;ficos, que cuentan con una interfaz gr&amp;aacute;fica para realizar configuraciones en el IIS y en segundo lugar podremos programar m&amp;oacute;dulos manejadores, que crean un manejador que se encuentra en todo momento escuchando todas las peticiones que llegan al servidor y cuando interceptan una nos permiten acceder a dicha petici&amp;oacute;n y modificarla. &lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Creaci&amp;oacute;n e instalaci&amp;oacute;n de un m&amp;oacute;dulo filtrador de peticiones para IIS7&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Hoy os voy ha ense&amp;ntilde;ar a programar el 2&amp;ordm; de los m&amp;oacute;dulos que antes comentamos, el m&amp;oacute;dulo manejador, y crearemos el ejemplo mas sencillo de m&amp;oacute;dulo, que simplemente interceptar&amp;aacute; una petici&amp;oacute;n web, y le devolver&amp;aacute; al cliente que la realiz&amp;oacute; la p&amp;aacute;gina solicitada pero con una cadena de texto al final.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;Instalaciones necesarias:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Para la implementaci&amp;oacute;n necesitaremos los siguientes elementos:&lt;/p&gt;
&lt;p align="justify"&gt;1. Microsoft Server 2008, Microsoft Server 2008 R2, Windows Vista o Windows 7&lt;/p&gt;
&lt;p align="justify"&gt;2. Visual Studio 2005-2008&lt;/p&gt;
&lt;p align="justify"&gt;3. IIS 7&lt;/p&gt;
&lt;p align="justify"&gt;4. Asistente para creaci&amp;oacute;n de m&amp;oacute;dulos: IIS7 Managed Module Starter Kit que ha producido el &lt;a href="http://www.iis.net/downloads/IISTeam/FindProfile.ashx"&gt;IISTeam&lt;/a&gt;, y que proporcionar&amp;aacute; el esqueleto del m&amp;oacute;dulo para el IIS, se puede descargar desde:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1302&amp;amp;g=6"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1302&amp;amp;g=6&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;Construcci&amp;oacute;n del m&amp;oacute;dulo:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Tras haber instalado el IIS7 Managed Module Starter Kit, cuando se crea un nuevo proyecto se puede ver como se ha a&amp;ntilde;adido una nueva opci&amp;oacute;n:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_c6EYhkUKGik/SiwoBuQoK0I/AAAAAAAAB-s/FzbpviDgBKU/s1600-h/image%5B4%5D.png"&gt;&lt;img border="0" width="599" src="http://lh6.ggpht.com/_c6EYhkUKGik/SiwoC7VCtCI/AAAAAAAAB-w/nlfvl-FNRII/image_thumb%5B2%5D.png?imgmax=800" alt="image" height="433" style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;La seleccionamos, le damos un nombre, una ubicaci&amp;oacute;n y aceptamos. Inmediatamente despu&amp;eacute;s se nos abrir&amp;aacute; una ventana donde nos resumen el contenido del asistente. Hacemos doble clic en el explorador de soluciones en el fichero MyModule.cs, que modificaremos dependiendo de las necesidades que tengamos en nuestro m&amp;oacute;dulo. Se nos abrir&amp;aacute; la ventana con el c&amp;oacute;digo del fichero, si expandimos las partes de c&amp;oacute;digo minimizadas, nos aparecer&amp;aacute; lo siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;using System;&lt;/p&gt;
&lt;p align="justify"&gt;using System.Collections.Generic;&lt;/p&gt;
&lt;p align="justify"&gt;using System.Text;&lt;/p&gt;
&lt;p align="justify"&gt;using System.Web;&lt;/p&gt;
&lt;p align="justify"&gt;namespace MyIIS7Modules&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;/// The module class.&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;public class MyModule : IHttpModule&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;#region IHttpModule Members&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;/// Initializes the module, and registers for application events.&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;param name=&amp;quot;application&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;/// The System.Web.HttpApplication instance exposing application events.&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;/param&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;public void Init(HttpApplication application)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;// register for the PreRequestHandlerExecute event:&lt;/p&gt;
&lt;p align="justify"&gt;application.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);&lt;/p&gt;
&lt;p align="justify"&gt;// TODO: add additional application event handlers here&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;/// Disposes of the resources (other than memory) used by the module.&lt;/p&gt;
&lt;p align="justify"&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p align="justify"&gt;public void Dispose()&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;#endregion&lt;/p&gt;
&lt;p align="justify"&gt;#region Module Event Handlers&lt;/p&gt;
&lt;p align="justify"&gt;public void OnPreRequestHandlerExecute(Object source, EventArgs e)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;HttpApplication app = (HttpApplication)source;&lt;/p&gt;
&lt;p align="justify"&gt;HttpContext context = app.Context;&lt;/p&gt;
&lt;p align="justify"&gt;// TODO: implement module functionality here&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;#endregion&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;&lt;/span&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En este fichero debemos hacer 3 modificaciones:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;1. Vaciamos todo el contenido de la funci&amp;oacute;n &amp;ldquo;Init&amp;rdquo;, y a&amp;ntilde;adimos la siguiente l&amp;iacute;nea que nos a&amp;ntilde;adir&amp;aacute; el evento manejador:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;i&gt;application.EndRequest += new EventHandler(application_EndRequest);&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;2. Eliminamos la siguiente funci&amp;oacute;n, que no necesitamos para nuestro m&amp;oacute;dulo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;i&gt;&lt;/i&gt;&lt;i&gt;public&lt;/i&gt;&lt;i&gt; void OnPreRequestHandlerExecute(Object source, EventArgs e)&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;{&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;HttpApplication app = (HttpApplication)source;&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;HttpContext context = app.Context;&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;// TODO: implement module functionality here&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;/em&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;3. A&amp;ntilde;adimos la siguiente funci&amp;oacute;n. En la parte comentada que pone &amp;ldquo;A&amp;Ntilde;ADIMOS NUESTRO C&amp;Oacute;DIGO&amp;rdquo; es donde deberemos programar las acciones que realizar&amp;aacute; nuestro m&amp;oacute;dulo, por ejemplo, a&amp;ntilde;adir una l&amp;iacute;nea nueva a todas las peticiones HTML que le llegan al servidor, filtrar su contenido, borrado de comentarios&amp;hellip; Para este ejemplo, vamos a a&amp;ntilde;adir una nueva l&amp;iacute;nea de texto, que salga en todas las p&amp;aacute;ginas web que devuelva nuestro servidor a los usuarios. Para ello simplemente llamamos al objeto context y le indicamos que en la respuesta a&amp;ntilde;adiremos un bloque de texto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;i&gt;void&lt;/i&gt;&lt;i&gt; application_EndRequest(object sender, EventArgs e)&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;{&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;HttpApplication application = (HttpApplication)sender;&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;HttpContext context = application.Context;&lt;/i&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;&lt;/i&gt;&lt;b&gt;//A&amp;Ntilde;ADIMOS NUESTRO C&amp;Oacute;DIGO&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;&lt;/i&gt;context.Response.Write(&amp;ldquo;P&amp;aacute;gina modificada por &lt;a href="http://www.windowstecnico.com/"&gt;www.windowstecnico.com&lt;/a&gt;&amp;rdquo;);&lt;/p&gt;
&lt;p align="justify"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Una vez construido nuestro m&amp;oacute;dulo debemos hacer 2 cosas:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;1.) Tenemos que firmar nuestra librer&amp;iacute;a .dll que hemos generado, para ello hacemos doble clic en el explorador de soluciones en la etiqueta &amp;ldquo;properties&amp;rdquo; y nos vamos a la pesta&amp;ntilde;a &amp;ldquo;firma&amp;rdquo;, marcamos la casilla &amp;ldquo;firmar el ensamblado&amp;rdquo; y en seleccionar un archivo de clave de nombre seguro le damos a :&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_c6EYhkUKGik/SiwoEMoF_YI/AAAAAAAAB-0/grFmEqP1oYo/s1600-h/image%5B9%5D.png"&gt;&lt;img border="0" width="613" src="http://lh4.ggpht.com/_c6EYhkUKGik/SiwoFYgyyoI/AAAAAAAAB-4/23a8yWFVcRU/image_thumb%5B5%5D.png?imgmax=800" alt="image" height="439" style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Le asignamos un nombre, por ejemplo, key.snk y desmarcamos la casilla de proteger con contrase&amp;ntilde;a. Con esto ya tenemos nuestra .dll firmada:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_c6EYhkUKGik/SiwoGeY-JfI/AAAAAAAAB-8/RbHMKQKbDBM/s1600-h/image%5B13%5D.png"&gt;&lt;img border="0" width="490" src="http://lh6.ggpht.com/_c6EYhkUKGik/SiwoHtA_8oI/AAAAAAAAB_A/j-WD2vBvKX0/image_thumb%5B7%5D.png?imgmax=800" alt="image" height="339" style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;2.) Tenemos que a&amp;ntilde;adir un peque&amp;ntilde;o script, que nos enviar&amp;aacute; nuestra .dll firmada a la carpeta de ensamblados que se encuentra en la ruta C:\Windows\assembly, desde donde el IIS la recoger&amp;aacute; para poder agregarla finalmente c&amp;oacute;mo modulo. Para ello, sin salirnos de la ventana &amp;ldquo;properties&amp;rdquo; nos vamos a la pesta&amp;ntilde;a &amp;ldquo;Eventos de generaci&amp;oacute;n&amp;rdquo;, y en el cuadro &amp;ldquo;l&amp;iacute;nea de comandos del evento posterior a la generaci&amp;oacute;n&amp;rdquo; incluimos el siguiente script si est&amp;aacute;is usando Visual Studio 2005:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;CALL &amp;quot;%VS80COMNTOOLS%\vsvars32.bat&amp;quot; &amp;gt; NULL&lt;/p&gt;
&lt;p align="justify"&gt;gacutil.exe /if &amp;quot;$(TargetPath)&amp;quot;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&amp;oacute; el siguiente si se est&amp;aacute; usando Visual Studio 2008:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;CALL &amp;quot;%VS90COMNTOOLS%\vsvars32.bat&amp;quot; &amp;gt; NULL&lt;/p&gt;
&lt;p align="justify"&gt;gacutil.exe /if &amp;quot;$(TargetPath)&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Quedando finalmente lo siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_c6EYhkUKGik/SiwoIgGb-TI/AAAAAAAAB_E/v7iKhfZaoWE/s1600-h/image%5B17%5D.png"&gt;&lt;img border="0" width="649" src="http://lh6.ggpht.com/_c6EYhkUKGik/SiwoKJeRcpI/AAAAAAAAB_I/qQ5dwYP2QCM/image_thumb%5B9%5D.png?imgmax=800" alt="image" height="337" style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;Configuraci&amp;oacute;n del IIS:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;1. Tras ejecutarse los scripts ya tendremos nuestra .dll firmada en la carpeta C:\Windows\assembly y lista para agregarla como modulo (en caso de tener la .dll aparte, bien porque la hemos generado desde otro PC o porque estamos probando una que no hemos generado nosotros, nos bastar&amp;aacute; con copiar la .dll a esta misma carpeta, seguramente tengamos que aumentar las permisos de esta carpeta antes). Tras esto nos vamos al Administrador de Internet Information Services y hacemos doble clic en el icono &amp;ldquo;m&amp;oacute;dulos&amp;rdquo;:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_c6EYhkUKGik/SiwoLOC8TgI/AAAAAAAAB_M/TGaDyEtXbTw/s1600-h/image%5B21%5D.png"&gt;&lt;img border="0" width="642" src="http://lh5.ggpht.com/_c6EYhkUKGik/SiwoMWhDh9I/AAAAAAAAB_Q/-kSjvcvRSPk/image_thumb%5B11%5D.png?imgmax=800" alt="image" height="423" style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Vamos a la opci&amp;oacute;n &amp;ldquo;agregar modulo administrado&amp;rdquo;:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_c6EYhkUKGik/SiwoN39qOOI/AAAAAAAAB_U/earEkxRehuQ/s1600-h/image%5B25%5D.png"&gt;&lt;img border="0" width="658" src="http://lh6.ggpht.com/_c6EYhkUKGik/SiwoQ5tS31I/AAAAAAAAB_Y/ZDOmRvm-zn0/image_thumb%5B13%5D.png?imgmax=800" alt="image" height="526" style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;En tipo, en el desplegable, seleccionamos nuestro m&amp;oacute;dulo, y le damos un nombre cualquiera:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_c6EYhkUKGik/SiwoSA7cpeI/AAAAAAAAB_c/uDO3d1OBtB8/s1600-h/image%5B29%5D.png"&gt;&lt;img border="0" width="454" src="http://lh5.ggpht.com/_c6EYhkUKGik/SiwoTbTfT4I/AAAAAAAAB_g/SlAiCXbfOsE/image_thumb%5B15%5D.png?imgmax=800" alt="image" height="327" style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Una vez hecho esto, si abrimos un sitio web alojado en el IIS, deber&amp;iacute;a estar funcionando nuestro m&amp;oacute;dulo y mostrarnos en las p&amp;aacute;ginas web la l&amp;iacute;nea de texto que le indicamos:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://blogserver.informatica64.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_4FA89E76.png"&gt;&lt;img border="0" width="474" src="http://blogserver.informatica64.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_1142DAC3.png" alt="image" height="282" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" title="image" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Espero que os haya gustado el post y que os anim&amp;eacute;is a programar vuestros propios m&amp;oacute;dulos, y recordad que lo mas importante es tener una buena idea y pensar que todo es programable, solo hacen falta las fuentes de informaci&amp;oacute;n adecuadas :), el pr&amp;oacute;ximo d&amp;iacute;a os hablar&amp;eacute; sobre la programaci&amp;oacute;n de m&amp;oacute;dulos con interfaz gr&amp;aacute;fica.&lt;/p&gt;
&lt;p&gt;saludos!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=1158" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://windowstecnico.com/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://windowstecnico.com/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://windowstecnico.com/archive/tags/Internet/default.aspx">Internet</category><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/IIS/default.aspx">IIS</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Creación e instalación de módulos para Internet Information Services 7 (parte I)</title><link>http://windowstecnico.com/archive/2009/10/27/creaci-243-n-e-instalaci-243-n-de-m-243-dulos-para-internet-information-services-7-parte-i.aspx</link><pubDate>Tue, 27 Oct 2009 08:07:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:1016</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=1016</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/10/27/creaci-243-n-e-instalaci-243-n-de-m-243-dulos-para-internet-information-services-7-parte-i.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://seekdotnethosting.files.wordpress.com/2009/03/iis7.jpg"&gt;&lt;img border="0" width="498" src="http://192.168.0.247:4443/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image001_5F00_446DA684.jpg" alt="clip_image001" height="476" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" title="clip_image001" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En el post de hoy vamos a comenzar una cadena de posts sobre IIS7, en concreto me gustar&amp;iacute;a hablaros sobre donde se prolongan sus l&amp;iacute;mites mediante programaci&amp;oacute;n.&lt;/p&gt;
&lt;p align="justify"&gt;Este ser&amp;aacute; el primero de tres post, en los que comentar&amp;eacute; desde el principio hasta el final como implementar un nuevo m&amp;oacute;dulo para IIS7 desde 0, que haga lo que vosotros quer&amp;aacute;is, desde captar una simple petici&amp;oacute;n web que haga alg&amp;uacute;n usuario al servidor, y modificarla a vuestro antojo, a sustitu&amp;iacute;rsela por otro documento, a&amp;ntilde;adirle scripts, lo que vosotros quer&amp;aacute;is, la imaginaci&amp;oacute;n pondr&amp;aacute; el l&amp;iacute;mite en esta tarea.&lt;/p&gt;
&lt;p align="justify"&gt;En este, que ser&amp;aacute; el primer post, os voy a introducir en la materia y daros un poco de informaci&amp;oacute;n sobre el tema empezando por el principio de los tiempos.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Que es &lt;/strong&gt;&lt;a href="http://www.iis.net/"&gt;&lt;strong&gt;IIS7&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;IIS7 es el servidor que llevan incorporadas las &amp;uacute;ltimas versiones de los sistemas operativos Windows, en concreto IIS 7.0 en las versiones de Windows Vista y Microsoft Server 2008 e IIS 7.5 en su nueva versi&amp;oacute;n para Windows 7 y Microsoft Server 2008 R2. Para los expertos en el tema sabr&amp;eacute;is que IIS7 se ha visto mejorado con respecto a IIS6 en numerosos aspectos, entre los que destaca la seguridad y sobre todo su aspecto y simplicidad, y es en este &amp;uacute;ltimo en el que Microsoft puede estar bien orgullosa, porque navegar por el men&amp;uacute; gr&amp;aacute;fico del IIS7 es un verdadero placer:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://blogserver.informatica64.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image003_5F00_1A23900B.jpg"&gt;&lt;img border="0" width="428" src="http://192.168.0.247:4443/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image003_5F00_thumb_5F00_1E306E8E.jpg" alt="clip_image003" height="508" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" title="clip_image003" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;IIS7 tambi&amp;eacute;n destaca por su sencillez de configuraci&amp;oacute;n, en gran parte conseguido por su interface. &lt;/p&gt;
&lt;p align="justify"&gt;Adem&amp;aacute;s, IIS7 ha sido dise&amp;ntilde;ado pensando en los desarrolladores, facilit&amp;aacute;ndoles Starters Kits para la implementaci&amp;oacute;n de extensiones para a&amp;ntilde;adirles m&amp;aacute;s caracter&amp;iacute;sticas. Para estos &amp;uacute;ltimos tambi&amp;eacute;n posee un sistema de diagn&amp;oacute;stico en tiempo de ejecuci&amp;oacute;n, muy &amp;uacute;til a la hora de depurar, que ofrece informaci&amp;oacute;n sobre que peticiones est&amp;aacute;n ejecut&amp;aacute;ndose actualmente, cu&amp;aacute;nto tiempo llevan ejecut&amp;aacute;ndose, que URLs est&amp;aacute;n siendo invocadas, que cliente las invoca, y cu&amp;aacute;l es su estado actual. Un verdadero gustazo.&lt;/p&gt;
&lt;p align="justify"&gt;Ahora que ya sab&amp;eacute;is un poco m&amp;aacute;s sobre IIS7, a instalarlo!, ten&amp;eacute;is un sencillo manual sobre su instalaci&amp;oacute;n en el siguiente link:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://learn.iis.net/page.aspx/28/installing-iis-70-on-windows-vista/"&gt;http://learn.iis.net/page.aspx/28/installing-iis-70-on-windows-vista/&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;En qu&amp;eacute; lenguaje programaremos los m&amp;oacute;dulos para IIS7?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Una vez instalado IIS7, y nos hayamos familiarizado con el entorno, comenzaremos a programar nuestro primer m&amp;oacute;dulo. Los m&amp;oacute;dulos para IIS7 los programaremos en C#, en .NET por supuesto :), as&amp;iacute; que ir preparando el Visual Studio (2005 o 2008), que el pr&amp;oacute;ximo d&amp;iacute;a daremos ca&amp;ntilde;a al compilador.&lt;/p&gt;
&lt;p align="justify"&gt;En el pr&amp;oacute;ximo post, os comentar&amp;eacute; como programar vuestro primer m&amp;oacute;dulo, en &amp;eacute;l, os ense&amp;ntilde;ar&amp;eacute; a crear una extensi&amp;oacute;n para el servidor que capture todas las peticiones web que realicen los usuarios al servidor y a modificarles las p&amp;aacute;ginas solicitadas, a&amp;ntilde;adi&amp;eacute;ndoles una l&amp;iacute;nea de texto al final de la p&amp;aacute;gina antes de devolv&amp;eacute;rsela al usuario. Un ejemplo muy sencillo, pero con el que ver&amp;eacute;is claramente, que se puede hacer casi cualquier cosa en el servidor desde un simple m&amp;oacute;dulo del IIS.&lt;/p&gt;
&lt;p align="justify"&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=1016" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://windowstecnico.com/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://windowstecnico.com/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/IIS/default.aspx">IIS</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item><item><title>SUA - Subsystem for Unix-Based Applications en WIndows</title><link>http://windowstecnico.com/archive/2009/03/26/sua-subsystem-for-unix-based-applications.aspx</link><pubDate>Thu, 26 Mar 2009 09:54:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:136</guid><dc:creator>Manuel Fernandez</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=136</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/03/26/sua-subsystem-for-unix-based-applications.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&amp;iquest;Que es SUA?, Se trata de una caracter&amp;iacute;stica poco conocida pero
realmente importante y &amp;uacute;til para los administradores y desarrolladores unix.
Consiste en un subsistema para la compilaci&amp;oacute;n y ejecuci&amp;oacute;n de aplicaciones
basadas en Unix, de manera totalmente interoperable con Windows.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Es la evoluci&amp;oacute;n de Interix (un subsistema que
se inclu&amp;iacute;a anteriormente con &amp;quot;windows services for unix 3.5&amp;quot;).&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Una de las ventajas que ofrece SUA frente a otros emuladores como
Cygwin, es que este interact&amp;uacute;a directamente con el kernel de Windows, por lo que
es mucho m&amp;aacute;s rapido que otros emuladores. Esto hace que SUA se convierta en una
excelente plataforma a la hora de migrar aplicaciones a Windows.&amp;nbsp;&lt;/span&gt;La instalaci&amp;oacute;n es sencilla, unicamente hay que activar la caracter&amp;iacute;stica
de &amp;quot;Subsystem for Unix-Based Applications&amp;quot;, accediendo desde
&amp;quot;Panel de control -&amp;gt; agregar programas o quitar programas -&amp;gt;
Activar/Desactivar caracter&amp;iacute;sticas de Windows&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.44.sua/1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Una vez activado, nos pedir&amp;aacute; que descargemos el SDK y algunas utilidades
para el subsistema. Tiene un tama&amp;ntilde;o aproximado de 470Mb, y puede ser descargado
desde &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=93ff2201-325e-487f-a398-efde5758c47f&amp;amp;displaylang=en"&gt;&lt;span&gt;http://www.microsoft.com/downloads/details.aspx?familyid=93ff2201-325e-487f-a398-efde5758c47f&amp;amp;displaylang=en&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Los componentes que incorpora son los siguientes:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;-
Utilidades base&lt;br /&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;- Utilidades SVR-5&lt;br /&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;- Base SDK &lt;br /&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;- GNU SDK &lt;br /&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;- Utilidades GNU&lt;br /&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;- UNIX Perl &lt;br /&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;- Debugger Visual Studio&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Una vez instalado, podemos acceder a dos tipos de shell, Korn
(ejecutando posix.exe /u /c /bin/ksh -l) y C shell (ejecutando posix.exe /u /c
/bin/csh -l).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.44.sua/2.png" alt="" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.44.sua/3.png" alt="" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Como hemos visto, tenemos ante nosotros una potente herramienta, la cual
podremos usar para la migraci&amp;oacute;n de aplicaciones, desarrollo de aplicaciones, o
cualquier otro uso.&amp;nbsp;&lt;/span&gt;&lt;span&gt;Si quieres aprender mucho m&amp;aacute;s sobre los secretos de lo sistemas Microsoft Windows, deber&amp;iacute;as leer el libro de&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;strong&gt;Sergio de los Santos&amp;nbsp;&lt;/strong&gt;&lt;/i&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;a href="http://www.informatica64.com/libros.aspx?id=mswindows" title="Seguridad en Windows"&gt;M&amp;aacute;xima Seguridad en Windows: Secretos T&amp;eacute;cnicos&lt;/a&gt;&lt;span&gt;&amp;quot; y, p&lt;/span&gt;&lt;span&gt;or &amp;uacute;ltimo, te recordamos que si te ha gustado el art&amp;iacute;culo puedes suscribirte al&amp;nbsp;&lt;/span&gt;&lt;a href="http://feeds2.feedburner.com/WindowsTecnico"&gt;Canal RSS de Windows T&amp;eacute;cnico&lt;/a&gt;&lt;span&gt;&amp;nbsp;para estar al d&amp;iacute;a de las novedades e informaci&amp;oacute;n t&amp;eacute;cnica de inter&amp;eacute;s.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Un saludo&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=136" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://windowstecnico.com/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://windowstecnico.com/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Configuraci_26002300_243_3B00_n/default.aspx">Configuraci&amp;#243;n</category></item></channel></rss>