<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>Sébastien Bovo [Microsoft France]  : Outils</title><link>http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx</link><description>Tags: Outils</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Debogage .NET 4.0</title><link>http://blogs.msdn.com/sbovo/archive/2009/11/30/debugnet40.aspx</link><pubDate>Mon, 30 Nov 2009 20:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9927871</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9927871.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9927871</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9927871</wfw:comment><description>&lt;p&gt;&lt;a title="VS2010 et .NET Fx 4.0" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank"&gt;Visual Studio 2010 et le .NET Framework 4&lt;/a&gt; sont disponible en Beta 2 depuis quelques semaines. Afin de vérifier un comportement qui m’a un peu surpris, je vais les utiliser pour le débogage.&lt;/p&gt;  &lt;p&gt;Voici le contexte : Dans un précédent billet, je parlais du &lt;a href="http://blogs.msdn.com/sbovo/archive/2009/07/09/deploymentretailtruepourasp-net.aspx" target="_blank"&gt;deployment retail=&amp;quot;true&amp;quot; pour ASP.NET&lt;/a&gt; en faisant référence au &lt;a title="Don’t run production ASP.NET Applications with debug=”true” enabled" href="http://weblogs.asp.net/scottgu/archive/2006/04/11/Don_1920_t-run-production-ASP.NET-Applications-with-debug_3D001D20_true_1D20_-enabled.aspx" target="_blank"&gt;billet de Scott Guthrie&lt;/a&gt;. Je pensais que retail=true était la solution pour s’affranchir du debug=true dans tous les Web.config du serveur. C’est seulement en parti vrai car le timeout des pages ASP.NET n’est pas modifié et reste démesuré si vous avez debug=true dans votre Web.config.&lt;/p&gt;  &lt;p&gt;Voici la preuve…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Page d’exemple&lt;/h3&gt;  &lt;p&gt;J’utilise un page exemple qui ne se termine jamais. Dans la vrai vie, nous aurons une boucle infinie plus complexes ou un bloclage quelconque. Dans tous les cas, le débogage est identique. Mon but est d’obtenir le timeout des pages ASP.NET. &lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/a&gt;&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; protected void Page_Load(object sender, EventArgs e)              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DateTime t1 = DateTime.Now;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: yellow; mso-highlight: yellow"&gt;while (true)&lt;/span&gt;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DateTime t2 = DateTime.Now;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }               &lt;br /&gt;&amp;lt;/script&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt;&amp;gt;               &lt;br /&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;               &lt;br /&gt;&amp;lt;/head&amp;gt;               &lt;br /&gt;&amp;lt;body&amp;gt;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div&amp;gt;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/form&amp;gt;               &lt;br /&gt;&amp;lt;/body&amp;gt;               &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Clin d’œil à Visual Studio 2010 et l’utilisation du zoom (CTRL+mollette de la souris) :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_8.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VS2010" border="0" alt="VS2010" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb.png" width="544" height="321" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Cette page doit être positionnée dans un site Web utilisant un pool d’application configuré avec le Framework 4.0.&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_4.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WhileTrueSite4" border="0" alt="WhileTrueSite4" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_1.png" width="544" height="353" /&gt;&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ASP.NET V4.0" border="0" alt="ASP.NET V4.0" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_7.png" width="342" height="238" /&gt;&lt;/p&gt;  &lt;p&gt;Avant de lancer WinDbg, naviguons vers notre page de test.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Lancement de WinDbg, chargement des symboles et SOS&lt;/h3&gt;  &lt;p&gt;Veillez bien à lancer Windbg en tant qu’administrateur et attachez-vous au processus W3WP.EXE en cours d’exécution (F6) :&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_10.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WinDbg" border="0" alt="WinDbg" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_2.png" width="544" height="789" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Chargement des symboles publics :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;.sympath SRV*c:\symbols*http://msdl.microsoft.com/download/symbols/&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Chargement de SOS livré avec le .NET Framework 4.0 :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;.load C:\Windows\Microsoft.NET\Framework\v4.0.21006\SOS&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Affichage des objets&lt;/h3&gt;  &lt;p&gt;Maintenant, cherchons notre page en court d’exécution&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;!DumpHeap -type System.Web.HttpContext&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_16.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DumpHeapHttpContext" border="0" alt="DumpHeapHttpContext" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_5.png" width="542" height="294" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;!do 062d9d18&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_18.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="HttContext" border="0" alt="HttContext" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_6.png" width="542" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Comme il s’agit d’un objet de type TimeSpan, nous devons utiliser la méthode !DumpVC (Pour information, voici le pointeur MSDN vers SOS - &lt;a title="SOS sur MSDN" href="http://msdn.microsoft.com/en-us/library/bb190764.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/bb190764.aspx&lt;/a&gt;)&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;!DumpVC 532747bc 062d9dd0&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_20.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Timeout" border="0" alt="Timeout" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_7.png" width="542" height="146" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;La valeur du timeout donnée est un nombre de ticks CPU. Sachant qu’il y a 10000 ticks par millisecondes. Pour obtenir le temps en secondes, nous devons donc diviser la valeur par 10000 puis par 1000. Utilisons Windbg comme calculatrice :&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;?1100000000/10000/1000&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WinDbgCommeCalculatrice" border="0" alt="WinDbgCommeCalculatrice" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_25.png" width="333" height="38" /&gt;&lt;/p&gt;  &lt;p&gt;Le timeout de la page ASPX est de 110 secondes.&lt;/p&gt;  &lt;p&gt;Nous avons bien le comportement normal et celui par défaut décrit dans le fichier &amp;quot;Web.config.comments&amp;quot; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_27.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="web.config.comments" border="0" alt="web.config.comments" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_10.png" width="544" height="183" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Maintenant, regardons avec exactement la même démarche, ce que nous avons avec debug=true (dans Web.config) et retail=true (dans le Machine.config) :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_29.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="debugtrue" border="0" alt="debugtrue" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_11.png" width="544" height="58" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_31.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="retailtrue" border="0" alt="retailtrue" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_12.png" width="344" height="60" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Je vous passe toutes les copies d’écran, voici juste les deux dernières commandes :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_33.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TimeoutPourHttpContext" border="0" alt="TimeoutPourHttpContext" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/image_thumb_13.png" width="542" height="148" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TimeoutDebug" border="0" alt="TimeoutDebug" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebugNET40_B427/66_3.png" width="385" height="41" /&gt; &lt;/p&gt;  &lt;p&gt;Le timeout est de 30 000 000 secondes soit 347 jours. Effectivement, dans ce cas, nous avons tout le temps de déboguer nos pages… Et le retail=true n’a pas changé ce comportement.&lt;/p&gt;  &lt;p&gt;La conclusion est : &lt;strong&gt;vérifiez que vous n’avez pas debug=true dans tous les Web.config en production même si vous avez retail=true&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Plutôt intéressant&amp;#160; :-) Qu’en pensez-vous ?&lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9927871" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/Debogage/default.aspx">Debogage</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/WinDbg/default.aspx">WinDbg</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/.NET+Fx+4.0/default.aspx">.NET Fx 4.0</category></item><item><title>Comment savoir si une dll est 32bits ou 64bits ?</title><link>http://blogs.msdn.com/sbovo/archive/2009/09/18/commentsavoirsiunedllest32bitsou64bits.aspx</link><pubDate>Fri, 18 Sep 2009 10:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9896269</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9896269.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9896269</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9896269</wfw:comment><description>&lt;p&gt;Point important pour vos développements natifs ou pour l’utilisation de composants COM sur plateformes x64 :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Un processus 64bits peut charger seulement des dlls 64bits. De la même manière, un processus 32bits peut charger seulement des dlls 32bits.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ceci peut paraitre trivial comme affirmation, mais cela a son importance car un processus 64bits ne pourra donc pas charger de dll 32bits. L’inverse n’est pas possible non plus.&lt;/p&gt;  &lt;p&gt;Voici la référence : &lt;a href="http://msdn.microsoft.com/en-us/library/aa384231(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa384231(VS.85).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ok, d’accord… Et pour la vérification, comment puis-je savoir si une dll est compilée en 32 ou 64 ?&lt;/p&gt;  &lt;p&gt;Simplement avec l’outil &lt;a title="Utilitaire DumpBin" href="http://msdn.microsoft.com/en-us/library/c1h23y6c.aspx"&gt;DumpBin&lt;/a&gt; livré avec Visual Studio. Vous pouvez le lancer directement à partir de la ligne de commande Visual Studio 2008.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VisualStudioCommandPrompt" border="0" alt="VisualStudioCommandPrompt" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirSiUneDllEst32bitsOu64bits_A9E4/image36.png" width="270" height="97" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Par exemple :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;dumpbin &amp;quot;C:\Windows\System32\inetsrv\asp.dll&amp;quot; /HEADERS&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirSiUneDllEst32bitsOu64bits_A9E4/image_8.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dumpbin" border="0" alt="dumpbin" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirSiUneDllEst32bitsOu64bits_A9E4/image_thumb_3.png" width="544" height="267" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;dumpbin &amp;quot;C:\Windows\System32\inetsrv\asp.dll&amp;quot; /HEADERS | findstr &amp;quot;(x64)&amp;quot;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirSiUneDllEst32bitsOu64bits_A9E4/image_4.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dumpbinfindstrx64" border="0" alt="dumpbinfindstrx64" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirSiUneDllEst32bitsOu64bits_A9E4/image_thumb_1.png" width="544" height="85" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;dumpbin &amp;quot;C:\Windows\SysWOW64\inetsrv\asp.dll&amp;quot; /HEADERS | findstr &amp;quot;(x86)&amp;quot;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirSiUneDllEst32bitsOu64bits_A9E4/image_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dumpbinfindstrx86" border="0" alt="dumpbinfindstrx86" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirSiUneDllEst32bitsOu64bits_A9E4/image_thumb.png" width="544" height="85" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Ca peut servir :-)&lt;/p&gt;  &lt;p&gt;Bye,&lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9896269" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category></item><item><title>"Deboguer ce dump" dans le menu contextuel de l’explorateur Windows</title><link>http://blogs.msdn.com/sbovo/archive/2009/05/14/deboguercedumpdanslmenucontextueldelexplorateurwindows.aspx</link><pubDate>Thu, 14 May 2009 15:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9583658</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9583658.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9583658</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9583658</wfw:comment><description>&lt;p&gt;Voici un petit raccourci bien pratique lorsque vous avez à ouvrir des dumps avec WinDbg :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;Windows Registry Editor Version 5.00 &lt;/p&gt;            &lt;p&gt;; Ajout de la fonctionnalité d’ouverture en double clic d’un dump par WinDbg dans le menu contextuel de l'explorateur Windows              &lt;br /&gt;; Cette fonctionnalité est ajouté pour les fichiers .DMP &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\.dmp]              &lt;br /&gt;@=&amp;quot;SB-DebugDumpFile&amp;quot; &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\SB-DebugDumpFile] &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\SB-DebugDumpFile\DefaultIcon]              &lt;br /&gt;@=&amp;quot;c:\\debuggers\\windbg.exe&amp;quot; &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\SB-DebugDumpFile\Shell] &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\SB-DebugDumpFile\Shell\SB-DebugThisDump]              &lt;br /&gt;@=&amp;quot;-&amp;gt; Deboguer ce dump&amp;quot; &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\SB-DebugDumpFile\Shell\SB-DebugThisDump\Command]              &lt;br /&gt;@=&amp;quot;\&amp;quot;C:\\debuggers\\windbg\&amp;quot; -z \&amp;quot;%1\&amp;quot;&amp;quot;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;A noter, que j’utilise le chemin &amp;quot;c:\debuggers\windbg.exe&amp;quot; ; N’oubliez pas de le changer si vous avez les outils de débogage dans un autre répertoire.&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Maintenant, un double clic sur un dump suffit pour l’ouvrir dans WinDbg !&lt;/p&gt;  &lt;p&gt;A bientôt,&lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9583658" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Debogage/default.aspx">Debogage</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category></item><item><title>Utilisez TinyGet pour effectuer rapidement une charge simple sur un serveur Web</title><link>http://blogs.msdn.com/sbovo/archive/2009/04/10/utiliseztinygetpoureffectuerrapidementunechargesimplesurunserveurweb.aspx</link><pubDate>Fri, 10 Apr 2009 12:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9535860</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9535860.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9535860</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9535860</wfw:comment><description>&lt;p&gt;L’outil &lt;strong&gt;TinyGet&lt;/strong&gt; n’a pas vocation remplacer un outil de test de charge blogs.mais il s’avère extrêmement pratique dans certains cas : Je vous conseille de le garder dans vos outils favoris. Il vous permettra de simuler une charge basique sur une application Web en quelques lignes de commandes.&lt;/p&gt;  &lt;p&gt;Les avantages sont les suivants :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Support du multithread pour effectuer des requêtes simultanées &lt;/li&gt;    &lt;li&gt;Support des itérations &lt;/li&gt;    &lt;li&gt;Paramétrage possible pour le type authentification, la version HTTP, les headers, le contenu de la requête, l’utilisation d’un certificat client &lt;/li&gt;    &lt;li&gt;Attente d’un contenu particulier pour la réponse, le code de retour&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Exemple de trois threads simultanés effectuant dix requêtes chacun&lt;/h3&gt;  &lt;p&gt;   &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;             &lt;p&gt;tinyget.exe -srv:sbovo02 -uri:/default.aspx -status:200 -threads:3 -loop:10&lt;/p&gt;           &lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;-threads donne le nombre de threads lancés simultanément.&lt;/p&gt;  &lt;p&gt;-loop indique le nombre d’itérations&lt;/p&gt;  &lt;p&gt;-status représente le code de retour attendu. Si TinyGet n’obtient pas ce code, un message est affiché dans la console&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_5.png" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConsoleIISRequests" border="0" alt="ConsoleIISRequests" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_thumb.png" width="534" height="294" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Exemple d’une requête attendant un contenu particulier&lt;/h3&gt;  &lt;p&gt;   &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;             &lt;p&gt;tinyget.exe -srv:sbovo02 -uri:/contenu.aspx -testContainString:&amp;quot;Texte&amp;quot;&lt;/p&gt;           &lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;-testContainString permet de mentionner quelle chaine (contenu dans le body de la réponse) nous attendons&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_14.png" target="_blank" mce_href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TinyGetTexte" border="0" alt="TinyGetTexte" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_thumb_6.png" width="534" height="309" mce_src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_thumb_6.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Exemple d’une requête avec l’affichage de la trace TinyGet ou les headers de la réponse&lt;/h3&gt;  &lt;p&gt;   &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;             &lt;p&gt;tinyget.exe -srv:sbovo02 -uri:/stylesheet.css -trace&lt;/p&gt;           &lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_13.png" target="_blank" mce_href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_13.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TinyGetTrace" border="0" alt="TinyGetTrace" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_thumb_5.png" width="534" height="403" mce_src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_thumb_5.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;             &lt;p&gt;tinyget.exe -srv:sbovo02 -uri:/stylesheet.css -headers&lt;/p&gt;           &lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_12.png" target="_blank" mce_href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TinyGetHeaders" border="0" alt="TinyGetHeaders" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_thumb_4.png" width="534" height="187" mce_src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/UtilisationdeTinyGetpoureffectuerstresse_A2C9/image_thumb_4.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pour télécharger l’outil et l’aide associée : IIS 6.0 Resource Kit Tools - &lt;a title="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1352" href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1352" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1352"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1352&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Je pense que vous avez bien vu l’utilité de cet outil soit pour simuler une charge soit pour vérifier les réponses d’une application Web. &lt;/p&gt;  &lt;p&gt;Bonne utilisation !&lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9535860" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Comment lister les mises à jour (Hotfixes) Windows ?</title><link>http://blogs.msdn.com/sbovo/archive/2009/04/03/commentlisterlesmisesajour-hotfixes-windows.aspx</link><pubDate>Fri, 03 Apr 2009 12:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9529302</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9529302.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9529302</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9529302</wfw:comment><description>&lt;p&gt;Bonjour,&lt;/p&gt;  &lt;p&gt;Dans le même esprit que mon &lt;a title="Comment savoir par script si Windows est 32bits ou 64bits ?" href="http://blogs.msdn.com/sbovo/archive/2009/04/02/commentsavoirparscriptsiwindowsest32ou64bits.aspx" target="_blank"&gt;précédent post&lt;/a&gt;, voici comment vous pouvez obtenir la liste des mises à jour ou hotfixes Windows en ligne de commande :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;systeminfo&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentConnaitreLesMisesAJourHotfixesWin_F6BC/image_5.png" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="systeminfo" border="0" alt="systeminfo" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentConnaitreLesMisesAJourHotfixesWin_F6BC/image_thumb.png" width="504" height="88" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentConnaitreLesMisesAJourHotfixesWin_F6BC/image_12.png" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ResultatSysteminfo" border="0" alt="ResultatSysteminfo" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentConnaitreLesMisesAJourHotfixesWin_F6BC/image_thumb_2.png" width="504" height="575" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Et ainsi, nous pouvons facilement rechercher si une mise à jour particulière a bien été installé :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;systeminfo | findstr KB961367&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentConnaitreLesMisesAJourHotfixesWin_F6BC/image10_1.png" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="systeminfo_findstr" border="0" alt="systeminfo_findstr" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentConnaitreLesMisesAJourHotfixesWin_F6BC/image10_thumb.png" width="504" height="88" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A noter, que &amp;quot;SystemInfo&amp;quot; donne une multitude d’informations supplémentaires qui peuvent vous être utile :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;OS Name&lt;/li&gt;    &lt;li&gt;OS Version&lt;/li&gt;    &lt;li&gt;Processor(s)&lt;/li&gt;    &lt;li&gt;Total Physical Memory&lt;/li&gt;    &lt;li&gt;Available Physical Memory&lt;/li&gt;    &lt;li&gt;Domain&lt;/li&gt;    &lt;li&gt;Logon Server&lt;/li&gt;    &lt;li&gt;etc…&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A bientôt,&lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9529302" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category></item><item><title>Comment savoir par script si Windows est 32bits ou 64bits ?</title><link>http://blogs.msdn.com/sbovo/archive/2009/04/02/commentsavoirparscriptsiwindowsest32ou64bits.aspx</link><pubDate>Thu, 02 Apr 2009 16:25:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9529105</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9529105.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9529105</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9529105</wfw:comment><description>&lt;p&gt;Bonjour,&lt;/p&gt;  &lt;p&gt;C’est peut-être une question triviale mais la réponse ne l’est pas forcement lorsque nous avons besoin d’avoir l’information directement dans un script en ligne de commande. Voici une méthode simple qui a le mérite de fonctionner :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;set | findstr PROCESSOR_ARCHITECTURE&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="32bits" border="0" alt="32bits" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirParScriptSiWindowsEst32ou64_D8E1/image_3.png" width="377" height="255" /&gt;&amp;#160;&amp;#160; &lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="64bits" border="0" alt="64bits" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/CommentSavoirParScriptSiWindowsEst32ou64_D8E1/image_9.png" width="368" height="255" /&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9529105" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category></item><item><title>Utilisation de Logparser pour les logs IIS : Status code, erreurs 404, erreurs 500, fréquentation</title><link>http://blogs.msdn.com/sbovo/archive/2009/03/16/exempleslogparsersurlogsiisStatuscode404500Frequentation.aspx</link><pubDate>Mon, 16 Mar 2009 16:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9444142</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9444142.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9444142</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9444142</wfw:comment><description>&lt;p&gt;Bonjour,&lt;/p&gt;  &lt;p&gt;Voici quelques requêtes Logparser utiles pour la surveillance d’un serveur Web.&lt;/p&gt;  &lt;p&gt;Bonne utilisation,&lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Pourcentage des codes de retour&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;StatusCode.sql&lt;/strong&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;SELECT              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sc-status as Statut,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; COUNT(*) as NbRequetes,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MUL(PROPCOUNT(*),100) as %               &lt;br /&gt;FROM               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ex\*.log               &lt;br /&gt;GROUP BY               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sc-status&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;A partir des données de sortie, vous pouvez facilement créer un graphique (cf. ci-dessous) avec un copier/coller dans Excel par exemple.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/ExemplesLogparserSurLogsIISStatusCode404_DD2C/image_9.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SatusCode" border="0" alt="SatusCode" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/ExemplesLogparserSurLogsIISStatusCode404_DD2C/image_thumb_2.png" width="478" height="349" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Erreurs 404 - Fichiers inexistants&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Url404.sql&lt;/strong&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;SELECT              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cs-uri-stem as Url,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; COUNT(*) as NbRequetes               &lt;br /&gt;FROM               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ex\*.log               &lt;br /&gt;WHERE               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sc-status = 404               &lt;br /&gt;GROUP BY               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cs-uri-stem&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Ce type de requête permet d’identifier les pages/fichiers/images n’existant pas, bien qu’étant toujours référencés par des pages de l’application. Vous pouvez aussi repérer par ce biais, les urls mal orthographiées. &lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Erreurs 500 - Erreurs ASP.NET&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Url500.sql&lt;/strong&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;SELECT              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cs-uri-stem as Url,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; COUNT(*) as NbRequetes               &lt;br /&gt;FROM               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ex\*.log               &lt;br /&gt;WHERE               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sc-status = 500               &lt;br /&gt;GROUP BY               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cs-uri-stem&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Le but est de pouvoir rapidement vérifier si une url/page est la source d’une grande partie des erreurs du site Web.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Url500Completes.sql&lt;/strong&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;SELECT              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cs-method as Methode,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UrlComplete,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sc-substatus as SousStatut,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sc-win32-status as Win32Statut               &lt;br /&gt;USING               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; STRCAT(cs-uri-stem,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; REPLACE_IF_NOT_NULL(cs-uri-query, STRCAT('?', cs-uri-query))) as UrlComplete               &lt;br /&gt;FROM               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ex\*.log&amp;#160; &lt;br /&gt;WHERE               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sc-status = 500&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;En ajoutant, les informations sur le verbe HTTP et la querystring, il est possible de commencer les investigations. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Fréquentation - Nombre de requêtes par heure&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;NbRequetesParHeure.sql&lt;/strong&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;SELECT              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; TO_LOCALTIME(QUANTIZE(time,3600)) AS Heure,               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; COUNT(*) AS NbRequetes               &lt;br /&gt;FROM               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ex\*.log               &lt;br /&gt;GROUP BY               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Heure               &lt;br /&gt;ORDER BY               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Heure ASC&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Cette requête est intéressante car elle utilise la fonction &amp;quot;QUANTIZE&amp;quot; qui permet dans ce cas, de regrouper tous les accès par tranches de 3600s (1h). Cela nous permet de visualiser l’évolution de la fréquentation du site Web.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/ExemplesLogparserSurLogsIISStatusCode404_DD2C/image_11.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FrenquentationTXT" border="0" alt="FrenquentationTXT" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/ExemplesLogparserSurLogsIISStatusCode404_DD2C/image_thumb_4.png" width="329" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/ExemplesLogparserSurLogsIISStatusCode404_DD2C/image_13.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FrenquentationGraphique" border="0" alt="FrenquentationGraphique" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/ExemplesLogparserSurLogsIISStatusCode404_DD2C/image_thumb_5.png" width="472" height="431" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Comme décrit dans mon &lt;a href="http://blogs.msdn.com/sbovo/archive/2009/01/13/analysedesfichiersdelogsaveclogparser.aspx" target="_blank"&gt;précédent post&lt;/a&gt;, pour utiliser ces requêtes, il vous suffit de lancer le fichier &amp;quot;LancerLogParserSurLogsIIS.cmd&amp;quot; avec le nom du fichier .sql en entrée et le nom du fichier .txt en sortie. Par exemple :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;LancerLogParserSurLogsIIS.cmd Url404.sql Url404.txt&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Pour rappel, le fichier LancerLogParserSurLogsIIS.cmd est :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;Logparser.exe file:%1 -i:IISW3C -o:TSV &amp;gt; %2&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9444142" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Analyse des fichiers de logs avec LogParser</title><link>http://blogs.msdn.com/sbovo/archive/2009/01/13/analysedesfichiersdelogsaveclogparser.aspx</link><pubDate>Tue, 13 Jan 2009 16:53:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9249739</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9249739.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9249739</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9249739</wfw:comment><description>&lt;p&gt;Bonjour &amp;#224; tous,&lt;/p&gt;  &lt;p&gt;Savez-vous que Microsoft fournit un outil tr&amp;#232;s puissant pour traiter tous les fichiers logs, m&amp;#234;me les siens :-) ?&lt;/p&gt;  &lt;p&gt;Cette outil s&amp;#8217;appelle &amp;quot;&lt;strong&gt;LogParser&lt;/strong&gt;&amp;quot; et se pr&amp;#233;sente sous deux formes :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Un ex&amp;#233;cutable (x1) utilisable (x2) et automatisable (x3) en ligne de commandes &lt;/li&gt;    &lt;li&gt;Une dll COM que l&amp;#8217;on peut r&amp;#233;f&amp;#233;rencer dans nos projets pour d&amp;#233;velopper une solution profitant des fonctionnalit&amp;#233;s de l&amp;#8217;outil &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Les possibilit&amp;#233;s et les sc&amp;#233;narios d&amp;#8217;utilisation sont vraiment nombreux. En plus, l&amp;#8217;outil est impressionnant de rapidit&amp;#233; !&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/AnalyseDesFichiersDeLogsAvecLogParser_A902/LogParser_2.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En deux mots, le moteur de LogParser prend en entr&amp;#233;e plusieurs formats comme les fichiers texte, les journaux d&amp;#8217;&amp;#233;v&amp;#232;nements, ou bien directement le syst&amp;#232;me de fichiers ou encore l&amp;#8217;active Directory. Concernant les fichiers plats, il n'y a pas de restriction : les fichiers de logs avec les s&amp;#233;parateurs habituels (point virgule, virgule, tabulation, etc...) sont pris en charge.&lt;/p&gt;  &lt;p&gt;Nous manipulons dans la requ&amp;#234;te directement le nom des champs (par exemple : &amp;quot;sc-status&amp;quot;, &amp;quot;time-taken&amp;quot;, etc...).&lt;/p&gt;  &lt;p&gt;Le moteur de LogParser permet d&amp;#8217;&amp;#233;x&amp;#233;cuter une requ&amp;#234;te de type SQL pour filtrer, ordonner, consolider les donn&amp;#233;es et en sortir les r&amp;#233;sultats sous diff&amp;#233;rentes formes. Il est m&amp;#234;me possible de faire directement l'insertion des donn&amp;#233;es dans une base SQL Server ou de g&amp;#233;n&amp;#233;rer des graphiques.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/AnalyseDesFichiersDeLogsAvecLogParser_A902/LogParser_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="MoteurLogParser" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/AnalyseDesFichiersDeLogsAvecLogParser_A902/LogParser_thumb.jpg" width="482" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pour simplifier l'utilisation de l'outil en ligne de commande, vous pouvez cr&amp;#233;er un fichier cmd prenant en entr&amp;#233;e le fichier contenant le requ&amp;#234;te SQL et le nom du fichier de sortie :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;LancerLogParserSurLogsIIS.cmd&lt;/strong&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;Logparser.exe file:%1 -i:IISW3C -o:TSV &amp;gt; %2&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;En exemple, voici une requ&amp;#234;te donnant les moyennes du temps total d'ex&amp;#233;cution des requ&amp;#234;tes faites sur un site Web :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TempsExecutionMoyen.sql&lt;/strong&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;SELECT AVG(time-taken) as TempsExecutionMoyen, COUNT(*) as PourNbRequetes, cs-uri-stem as Url              &lt;br /&gt;FROM ex\*.log               &lt;br /&gt;WHERE               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (cs-uri-stem not like '%.gif')               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; and (cs-uri-stem not like '%.css')               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; and (cs-uri-stem not like '%.js')               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; and (cs-uri-stem not like '%.jpg')               &lt;br /&gt;GROUP BY               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Url               &lt;br /&gt;ORDER BY               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; TempsExecutionMoyen DESC&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Il suffit ensuite de lancer le fichier cmd :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;LancerLogParserSurLogsIIS.cmd TempsExecutionMoyen.sql TempsExecutionMoyen.txt&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Le r&amp;#233;sultat est sous la forme suivante (fichier avec s&amp;#233;paration par tabulation) :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;TempsExecutionMoyen&amp;#160;&amp;#160;&amp;#160; PourNbRequetes&amp;#160;&amp;#160;&amp;#160; Url              &lt;br /&gt;67843&amp;#160;&amp;#160;&amp;#160; 8&amp;#160;&amp;#160;&amp;#160; /monapp/AllProducts.aspx               &lt;br /&gt;5532&amp;#160;&amp;#160;&amp;#160; 9&amp;#160;&amp;#160;&amp;#160; /monapp/CreateAccount.aspx               &lt;br /&gt;5525&amp;#160;&amp;#160;&amp;#160; 3&amp;#160;&amp;#160;&amp;#160; /monapp/FeaturedProducts.aspx               &lt;br /&gt;5062&amp;#160;&amp;#160;&amp;#160; 8&amp;#160;&amp;#160;&amp;#160; /monapp/CompanyInformation.aspx               &lt;br /&gt;2261&amp;#160;&amp;#160;&amp;#160; 4&amp;#160;&amp;#160;&amp;#160; /monapp/Links.aspx               &lt;br /&gt;305&amp;#160;&amp;#160;&amp;#160; 28&amp;#160;&amp;#160;&amp;#160; /monapp/ProductInfo.aspx               &lt;br /&gt;156&amp;#160;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160; /monapp/               &lt;br /&gt;61&amp;#160;&amp;#160;&amp;#160; 9&amp;#160;&amp;#160;&amp;#160; /monapp/Reviews.aspx               &lt;br /&gt;56&amp;#160;&amp;#160;&amp;#160; 5&amp;#160;&amp;#160;&amp;#160; /monapp/News.aspx               &lt;br /&gt;0&amp;#160;&amp;#160;&amp;#160; 4&amp;#160;&amp;#160;&amp;#160; /monapp/Default.htm &lt;/p&gt;            &lt;p&gt;Statistics:              &lt;br /&gt;-----------               &lt;br /&gt;Elements processed: 203               &lt;br /&gt;Elements output:&amp;#160;&amp;#160;&amp;#160; 10               &lt;br /&gt;Execution time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0.01 seconds &lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Le plus int&amp;#233;ressant est que ce fichier peut &amp;#234;tre directement ouvert dans Excel afin de pouvoir profiter du filtre automatique, de la cr&amp;#233;ation de graphiques : L'analyse en devient presque facile !&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a target="_blank" href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/AnalyseDesFichiersDeLogsAvecLogParser_A902/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="LogParserDansExcel" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/AnalyseDesFichiersDeLogsAvecLogParser_A902/image_thumb_2.png" width="537" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;L'outil est disponible &amp;#224; l'adresse suivante - &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A utiliser sans mod&amp;#233;ration :-)&lt;/p&gt;  &lt;p&gt;Sebastien.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9249739" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Fonctionnalité “Open Command Window Here” de Windows Vista en permanence dans le menu contextuel de l’explorateur Windows</title><link>http://blogs.msdn.com/sbovo/archive/2008/09/22/fonctionnalit-open-command-window-here-de-windows-vista-en-permanence-dans-le-menu-contextuel-de-l-explorateur-windows.aspx</link><pubDate>Mon, 22 Sep 2008 09:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8958671</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/8958671.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=8958671</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=8958671</wfw:comment><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Dans un précédent &lt;a title="Fonctionnalité “Copy as Path” de Windows Vista en permanence dans le menu contextuel de l’explorateur Windows" href="http://blogs.msdn.com/sbovo/archive/2008/08/23/fonctionnalit-copy-as-path-de-windows-vista-en-permanence-dans-le-menu-contextuel-de-l-explorateur-windows.aspx"&gt;post&lt;/a&gt;, je parlais d’une fonctionnalité fort utile mais uniquement disponible avec SHIFT + clic droit. J’ai repris la même idée pour ajouter dans le menu contextuel de l’explorateur Windows un raccourci ouvrant une ligne de commande directement dans le dossier cliqué. &lt;/p&gt;  &lt;p&gt;J’ai aussi ajouté ce raccourci pour le clic droit sur les fichiers, ce qui a pour effet d’ouvrir la ligne dans le dossier contenant le fichier cliqué. La commande cmd n’est pas, à proprement dit exacte, puisqu’un &amp;quot;cd c:\monRepertoire\MonFichier.txt&amp;quot; est exécuté. Cela fonctionne avec un message « The directory name is invalid. » en début de ligne de commande. Mais bon, le cœur y est et le tout fonctionne.&lt;/p&gt;  &lt;p&gt;Voici les fichiers .REG d’installation et de désinstallation :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;Windows Registry Editor Version 5.00 &lt;/p&gt;            &lt;p&gt;; Ajout de la fonctionnalité&amp;#160; équivalente à &amp;quot;Open Command Window Here&amp;quot; dans le menu contextuel de l'explorateur Windows              &lt;br /&gt;; L'ajout est fait pour les dossiers et les fichiers (même si pour les fichiers la commande renvoit un chemin incorrect) &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\*\shell\OuvrirCommande]              &lt;br /&gt;@=&amp;quot;-&amp;gt; Ligne de commande dans ce dossier&amp;quot; &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\*\shell\OuvrirCommande\command]              &lt;br /&gt;@=&amp;quot;cmd.exe /k cd %1&amp;quot; &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\Folder\shell\OuvrirCommande]              &lt;br /&gt;@=&amp;quot;-&amp;gt; Ligne de commande dans ce dossier&amp;quot; &lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\Folder\shell\OuvrirCommande\command]              &lt;br /&gt;@=&amp;quot;cmd.exe /k cd %1&amp;quot;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;br /&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;Windows Registry Editor Version 5.00 &lt;/p&gt;            &lt;p&gt;; Désinstallation de la fonctionnalité équivalente à &amp;quot;Open Command Window Here&amp;quot; dans le menu contextuel de l'explorateur Windows &lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\*\shell\OuvrirCommande]              &lt;br /&gt;@=&amp;quot;-&amp;gt; Ligne de commande dans ce dossier&amp;quot; &lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\*\shell\OuvrirCommande\command]              &lt;br /&gt;@=&amp;quot;cmd.exe /k cd %1&amp;quot; &lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\Folder\shell\OuvrirCommande]              &lt;br /&gt;@=&amp;quot;-&amp;gt; Ligne de commande dans ce dossier&amp;quot; &lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\Folder\shell\OuvrirCommande\command]              &lt;br /&gt;@=&amp;quot;cmd.exe /k cd %1&amp;quot;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Le résultat :&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LigneDeCommande" border="0" alt="LigneDeCommande" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/FonctionnalitOpenCommandWindowHeredeWind_A0BD/LigneDeCommande_3.jpg" width="456" height="319" /&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8958671" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category></item><item><title>Fonctionnalité “Copy as Path” de Windows Vista en permanence dans le menu contextuel de l’explorateur Windows</title><link>http://blogs.msdn.com/sbovo/archive/2008/08/23/fonctionnalit-copy-as-path-de-windows-vista-en-permanence-dans-le-menu-contextuel-de-l-explorateur-windows.aspx</link><pubDate>Sat, 23 Aug 2008 14:53:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8890333</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/8890333.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=8890333</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=8890333</wfw:comment><description>&lt;p&gt;Vous connaissez “Copy as Path” avec SHIFT + clic droit sur un élément dans l’explorateur Windows ? &lt;/p&gt;  &lt;p&gt;&lt;img title="CopyAsPath" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="397" alt="CopyAsPath" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/FonctionnalitCopyasPathdeWindowsVistaenp_A8A1/image_7.png" width="386" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Cette fonctionnalité est très pratique et permet en 2 clics de récupérer le chemin complet d’un fichier ou d’un répertoire. Par contre, il faut penser à utiliser la touche SHIFT avant de cliquer droit sur l’objet. &lt;/p&gt;  &lt;p&gt;J’ai recherché pour savoir s’il était possible d’activer cette fonctionnalité sur le simple clic droit car cela serait tellement pratique. Les demandes vers le groupe produit ont confirmé qu’il n’était pas possible de rendre cette commande « permanente » sur le clic droit. Cela a été conçu comme ceci pour ne pas surcharger le menu contextuel. &lt;/p&gt;  &lt;p&gt;Alors pourquoi ne pas essayer de le faire soi-même ? Après plusieurs essais, j’ai découvert des fonctionnalités de CMD.EXE. En bricolant, j’ai obtenu un résultat intéressant : ce n’est pas très esthétique car la fenêtre CMD.EXE s’ouvre et se referme aussitôt, mais cela fonctionne.&lt;/p&gt;  &lt;p&gt;Je souhaite le partager avec vous.&lt;/p&gt;  &lt;p&gt;Voici le fichier .REG d’installation :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-right: 1px dotted; border-top: 1px dotted; border-left: 1px dotted; border-bottom: 1px dotted" bordercolor="#000080" bgcolor="#e1eaff"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;Windows Registry Editor Version 5.00&lt;/p&gt;            &lt;p&gt;; Ajout de la fonctionnalité &amp;quot;Copy as Path&amp;quot; dans le menu contextuel de l'explorateur Windows&lt;/p&gt;            &lt;p&gt;; L'ajout est fait pour les fichiers et pour les dossiers&lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\*\shell\CopierLeChemin]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;-&amp;gt; Copier le chemin&amp;quot;&lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\*\shell\CopierLeChemin\command]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;cmd.exe /c echo \&amp;quot;%1\&amp;quot; | clip&amp;quot;&lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\Folder\shell\CopierLeChemin]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;-&amp;gt; Copier le chemin&amp;quot;&lt;/p&gt;            &lt;p&gt;[HKEY_CLASSES_ROOT\Folder\shell\CopierLeChemin\command]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;cmd.exe /c echo \&amp;quot;%1\&amp;quot; | clip&amp;quot;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Voici celui correspondant à la désinstallation :&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-right: 1px dotted; border-top: 1px dotted; border-left: 1px dotted; border-bottom: 1px dotted" bordercolor="#000080" bgcolor="#e1eaff"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;Windows Registry Editor Version 5.00&lt;/p&gt;            &lt;p&gt;; Désinstallation de la fonctionnalité &amp;quot;Copy as Path&amp;quot; dans le menu contextuel de l'explorateur Windows&lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\*\shell\CopierLeChemin]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;-&amp;gt; Copier le chemin&amp;quot;&lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\*\shell\CopierLeChemin\command]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;cmd.exe /c echo \&amp;quot;%1\&amp;quot; | clip&amp;quot;&lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\Folder\shell\CopierLeChemin]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;-&amp;gt; Copier le chemin&amp;quot;&lt;/p&gt;            &lt;p&gt;[-HKEY_CLASSES_ROOT\Folder\shell\CopierLeChemin\command]&lt;/p&gt;            &lt;p&gt;@=&amp;quot;cmd.exe /c echo \&amp;quot;%1\&amp;quot; | clip&amp;quot;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Le tour est joué : &lt;/p&gt;  &lt;p&gt;&lt;img title="CopierLeChemin" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="322" alt="CopierLeChemin" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/FonctionnalitCopyasPathdeWindowsVistaenp_A8A1/image_8.png" width="397" border="0" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Profitez :-)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8890333" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category></item><item><title>Les outils Windows Sysinternals sont maintenant disponibles en liens directs sur Internet</title><link>http://blogs.msdn.com/sbovo/archive/2008/06/04/les-outils-windows-sysinternals-sont-disponibles-en-liens-directs-sur-internet.aspx</link><pubDate>Wed, 04 Jun 2008 15:00:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8571517</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/8571517.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=8571517</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=8571517</wfw:comment><description>&lt;p&gt;Les outils Sysinternals sont sur le site TechNet. Ils sont tri&amp;#233;s par cat&amp;#233;gories : Nous avons leurs descriptif/fonctionnalit&amp;#233;s ainsi que le lien de t&amp;#233;l&amp;#233;chargement.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/LesoutilsWindowsSysinternalssontdisponib_DCD5/image_2.png" target="_blank"&gt;&lt;/a&gt;&lt;a title="Windows Sysinternals" href="http://technet.microsoft.com/en-us/sysinternals/" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="412" alt="WindowsSysinternals" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/LesoutilsWindowsSysinternalssontdisponib_DCD5/image_9.png" width="477" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Maintenant, pour une utilisation imm&amp;#233;diate, vous pouvez naviguez ou monter un lecteur r&amp;#233;seau vers &lt;a title="http://live.sysinternals.com/" href="http://live.sysinternals.com/"&gt;http://live.sysinternals.com/&lt;/a&gt;. Cela peut &amp;#234;tre utile pour utiliser vos outils favoris sans avoir &amp;#224; sauvegarder et d&amp;#233;compresser les fichiers t&amp;#233;l&amp;#233;charg&amp;#233;s. Il est aussi plus simples d'en faire le d&amp;#233;ploiement automatis&amp;#233;.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="340" alt="LiveSysinternals" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/LesoutilsWindowsSysinternalssontdisponib_DCD5/image_14.png" width="485" border="0" /&gt;&amp;#160;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="304" alt="PartageReseauLiveSysInternals" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/LesoutilsWindowsSysinternalssontdisponib_DCD5/image_15.png" width="362" border="0" /&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8571517" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Outils/default.aspx">Outils</category></item></channel></rss>