<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.NET Framework</title>
        <link>http://blogs.ugidotnet.org/Alexblog/category/.NET Framework.aspx</link>
        <description>.NET Framework</description>
        <language>it-IT</language>
        <copyright>Ermanno Goletto</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Ricavare i path di default per i file di dati e logs in SQL Server 2005</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2008/05/29/92866.aspx</link>
            <description>&lt;p&gt;Una delle impostazioni che possibile fare su un'istanza di SQL Server è quella del percorso di default in cui memorizzare file dati e logs di un nuovo database. Ho fatto diverse ricerca, ma non trovato un modo semplice per ricavare tramite T-SQL tali informazioni.&lt;/p&gt;
&lt;p&gt;A quanto sembra se si modificano tali percorsi questi vengono memorizzati nelle chiavi di registry:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\DefaultData&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\&lt;font face="Arial"&gt;DefaultLog&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In caso contrario i path è quello specificato durante l'installazione per i File di dati quindi si può pensare di ricavarli dai path dei file mdf e ldf del database master.&lt;/p&gt;
&lt;p&gt;Di seguito uno script T-SQL per ricavare il path di default per i file di dati:&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;USE master&lt;br /&gt;
declare @DefaultData nvarchar(512)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;--Lettura chiave di registry HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\DefaultData&lt;br /&gt;
EXEC xp_instance_regread N'HKEY_LOCAL_MACHINE',&lt;br /&gt;
 N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData',&lt;br /&gt;
 @DefaultData OUTPUT, 'no_output'&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;--Se la chiave di registry non esiste si utilizza il path del file mdf del database master&lt;br /&gt;
IF (@DefaultData IS NULL)&lt;br /&gt;
 BEGIN&lt;br /&gt;
  SELECT  @DefaultData = SUBSTRING(physical_name, 0, CHARINDEX(N'master.mdf', physical_name))&lt;br /&gt;
  FROM sys.database_files&lt;br /&gt;
  WHERE name='master'&lt;br /&gt;
 END&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;--Rimozione eventuale slash finale&lt;br /&gt;
IF ((@DefaultData IS NOT NULL) AND (CHARINDEX(N'\', @DefaultData, len(@DefaultData)) &amp;gt; 0))&lt;br /&gt;
BEGIN&lt;br /&gt;
 SELECT @DefaultData = STUFF (@DefaultData,len(@DefaultData),1,N'')&lt;br /&gt;
END&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;SELECT @DefaultData&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Mentre questo è lo script per ricavare il path di default per i file di log:&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;USE master&lt;br /&gt;
declare @DefaultLog nvarchar(512)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;--Lettura chiave di registry HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\DefaultLog&lt;br /&gt;
EXEC xp_instance_regread N'HKEY_LOCAL_MACHINE',&lt;br /&gt;
 N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog',&lt;br /&gt;
 @DefaultLog OUTPUT, 'no_output'&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;--Se la chiave di registry non esiste si utilizza il path&lt;br /&gt;
--del file mdf del database master&lt;br /&gt;
IF (@DefaultLog IS NULL)&lt;br /&gt;
 BEGIN&lt;br /&gt;
  SELECT  @DefaultLog = SUBSTRING(physical_name, 0, CHARINDEX(N'mastlog.ldf', physical_name))&lt;br /&gt;
  FROM sys.database_files&lt;br /&gt;
  WHERE name='mastlog'&lt;br /&gt;
 END&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;--Rimozione eventuale slash finale&lt;br /&gt;
IF ((@DefaultLog IS NOT NULL) AND (CHARINDEX(N'\', @DefaultLog, len(@DefaultLog)) &amp;gt; 0))&lt;br /&gt;
BEGIN&lt;br /&gt;
 SELECT @DefaultLog = STUFF (@DefaultLog,len(@DefaultLog),1,N'')&lt;br /&gt;
END&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;SELECT @DefaultLog&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Se poi occorre usare questi script in un programma .NET il mio consiglio è quello di non inserire lo script nel codice, ma di creare dei file con estensione sql in questo modo Visual Studio visualizzerà lo script evidenziando le parole chiave esattamente come in Management Studio. Quindi aggiungere il file come risorsa in questo modo VS 2005 e sucessivi creeranno una comoda prorietà stringa in My.Resources che conterrà il testo del file. In VS 2003 è possibile impostare il file come Embedded e tramite un po' di codice leggere il contenuto del file:&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;        Dim text As String = String.Empty&lt;br /&gt;
        Dim resource As System.IO.Stream = _&lt;br /&gt;
            System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream( _&lt;br /&gt;
                "&lt;em&gt;&lt;strong&gt;NameSpace.FileName&lt;/strong&gt;&lt;/em&gt;")&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;        Dim reader As New System.IO.StreamReader(resource)&lt;br /&gt;
        text = reader.ReadToEnd()&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;        reader.Close() : reader = Nothing&lt;br /&gt;
        resource.Close() : resource = Nothing&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/92866.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2008/05/29/92866.aspx</guid>
            <pubDate>Thu, 29 May 2008 22:50:39 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2008/05/29/92866.aspx#feedback</comments>
            <slash:comments>29</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/92866.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/92866.aspx</trackback:ping>
        </item>
        <item>
            <title>Autosizing delle righe di un DataGrid</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2008/05/16/92703.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;A volte mi capita di dover mettere mano a codice .NET 1.1 su Visual Studio 2003 e in questa versione la griglia nativa il DataGrid non era ricco di funzionalità. L'ultima richiesta che mi è arrivata è come realizzare l'autosizing delle righe per vedere completamente il contenuto delle righe le cui colonne vano su più righe. Manualment la cosa è possibiole quindi la funzionalità in effetti c'è ma non è esposta e quindi occorre utilizzare la reflection come indicato in questo link &lt;a target="_blank" href="http://www.syncfusion.com/FAQ/winforms/FAQ_c44c.aspx"&gt;http://www.syncfusion.com/FAQ/winforms/FAQ_c44c.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Di seguito la versione che ho realizzato:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Private Sub AutoSizeRows(ByVal columnStyle As System.Windows.Forms.DataGridColumnStyle)&lt;br /&gt;
  Dim dataGrid As System.Windows.Forms.DataGrid = columnStyle.DataGridTableStyle.DataGrid&lt;br /&gt;
  Dim dataGridtype As System.Type = dataGrid.GetType&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;  Do&lt;br /&gt;
    dataGridtype = dataGridtype.BaseType&lt;br /&gt;
    If dataGridtype Is Nothing Then Exit Sub&lt;br /&gt;
  Loop Until dataGridtype.FullName = GetType(System.Windows.Forms.DataGrid).FullName&lt;br /&gt;
  &lt;br /&gt;
  While dataGridtype.FullName &amp;lt;&amp;gt; GetType(System.Windows.Forms.DataGrid).FullName&lt;br /&gt;
    dataGridtype = dataGridtype.BaseType&lt;br /&gt;
  End While&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;  Dim mi As System.Reflection.MethodInfo = dataGridtype.GetMethod("get_DataGridRows", _&lt;br /&gt;
    Reflection.BindingFlags.FlattenHierarchy Or _&lt;br /&gt;
    Reflection.BindingFlags.IgnoreCase Or _&lt;br /&gt;
    Reflection.BindingFlags.Instance Or _&lt;br /&gt;
    Reflection.BindingFlags.NonPublic Or _&lt;br /&gt;
    Reflection.BindingFlags.Public Or _&lt;br /&gt;
    Reflection.BindingFlags.Static)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;  Dim dataGridRows As New ArrayList&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;  For Each item As Object In CType(mi.Invoke(dataGrid, Nothing), Array)&lt;br /&gt;
    If item.ToString().EndsWith("DataGridRelationshipRow") Then&lt;br /&gt;
      dataGridRows.Add(item)&lt;br /&gt;
    End If&lt;br /&gt;
  Next&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;  Dim bmb As System.Windows.Forms.BindingManagerBase = _&lt;br /&gt;
    dataGrid.BindingContext(dataGrid.DataSource, dataGrid.DataMember)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;  If Not bmb Is Nothing AndAlso bmb.Count &amp;gt; 0 Then&lt;br /&gt;
    Dim size As System.Drawing.SizeF&lt;br /&gt;
    Dim g As System.Drawing.Graphics = _&lt;br /&gt;
      System.Drawing.Graphics.FromHwnd(dataGrid.Handle)&lt;br /&gt;
    Dim sf As New StringFormat(StringFormat.GenericTypographic)&lt;br /&gt;
    Dim columnIndex As Integer = columnStyle.DataGridTableStyle.GridColumnStyles.IndexOf(columnStyle)&lt;br /&gt;
    Dim pi As System.Reflection.PropertyInfo&lt;br /&gt;
    Dim rowHeight As Integer&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;    For rowIndex As Integer = 0 To bmb.Count - 1&lt;br /&gt;
      size = g.MeasureString(dataGrid(rowIndex, columnIndex).ToString(), dataGrid.Font, columnStyle.Width, sf)&lt;br /&gt;
      pi = dataGridRows(rowIndex).GetType().GetProperty("Height")&lt;br /&gt;
      rowHeight = System.Convert.ToInt32(size.Height)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;      'Little extra cellpadding space &lt;br /&gt;
      rowHeight += 8&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;      pi.SetValue(dataGridRows(rowIndex), rowHeight, Nothing)&lt;br /&gt;
    Next&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;    'Rilascio risorse&lt;br /&gt;
     g.Dispose() : g = Nothing&lt;br /&gt;
     sf.Dispose() : sf = Nothing&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;  End If&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;End Sub&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/92703.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2008/05/16/92703.aspx</guid>
            <pubDate>Fri, 16 May 2008 16:59:17 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2008/05/16/92703.aspx#feedback</comments>
            <slash:comments>19</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/92703.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/92703.aspx</trackback:ping>
        </item>
        <item>
            <title>Inviare mail tramite .NET 1.1 con Exchange 2003 e Exchange 2007</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2008/04/09/92134.aspx</link>
            <description>&lt;p&gt;In questo &lt;a target="_blank" href="http://blogs.ugidotnet.org/AlexBlog/articles/92133.aspx"&gt;articolo&lt;/a&gt; ho raccolto alcune riflessioni su come inviare mail tramite .NET Framework 1.1 e 2.0 utilizzando Exchange 2003 e Exchange 2007 analizzando le differenze relative alla gestione dell'autenticazione in .NET 1.1 e 2.0 e le modifiche apportate in Exchange 2007 rispetto a Exchange 2003.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/92134.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2008/04/09/92134.aspx</guid>
            <pubDate>Wed, 09 Apr 2008 13:15:04 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2008/04/09/92134.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/92134.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/92134.aspx</trackback:ping>
        </item>
        <item>
            <title>Sincronizzazione Replica SQL Server 2005 per sottoscrizioni Pull</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2008/03/27/91913.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Dopo aver configurato la replica il passo successivo è quello di automatizzare la sincronizzazione delle sottoscrizioni e per farlo vi sono vari modi come ad esempio utilizzare &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms151863.aspx"&gt;Windows Synchronization Manager&lt;/a&gt; (mobsync.exe) che permette l'impostazione della sincronizzazione all'accesso, alla chiusura, durante l'inattività o in modo pianificato.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Se però come, nel mio caso, per eseguire la sincronizzazione è necessario avviare prima una connesione VPN e chiuderla al termine la cosa si complica perchè mobsync consente di gestire la connesione automatica sono per sincronizzazioni pianificate.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Per ovviare è possibile ricorrere ad uno script di questo tipo:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;SET ConnectionName="Nome Connessione RAS"&lt;br /&gt;
SET Publisher=NomeServerPubblicazione&lt;br /&gt;
SET Subscriber=NomeServerSottoscrizione&lt;br /&gt;
SET PublicationDB=NomeDBPubblicazione&lt;br /&gt;
SET SubscriptionDB=NomeDBSottoscrizione&lt;br /&gt;
SET Publication=NomePubblicazione&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;Rem Avvio connessione VPN&lt;br /&gt;
start /w %Systemroot%\System32\Rasphone -d %ConnectionName"&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;Rem Avvio Sincronizzazione Replica&lt;br /&gt;
"%ProgramFiles%\Microsoft SQL Server\90\COM\REPLMERG.EXE" -Publication %Publication% -Publisher %Publisher% -Subscriber %Subscriber% -Distributor %Publisher% -PublisherDB %PublicationDB% -SubscriberDB %SubscriptionDB% -PublisherSecurityMode 1 -OutputVerboseLevel 2 -SubscriberSecurityMode 1 -SubscriptionType 1 -DistributorSecurityMode 1 -Validate 3 -ParallelUploadDownload 1&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;REM Arresto connessione VPN&lt;br /&gt;
start /w %Systemroot%\System32\Rasphone -h %ConnectionName"&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Lo script utilizza REPLMERG.EXE che consente per default registra maggiori informazioni sul processo di sincronizzazione rispetto all'esecuzione con mobsync, informazioni visibili tramite il Monitoraggio Replica. Il livello di informazioni è impostabile tramite il parametro HistoryVerboseLevel (per default =2)&lt;/p&gt;
&lt;p&gt;Per ulteriori informazioni si veda:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://technet.microsoft.com/en-us/library/ms147839.aspx"&gt;Replication Merge Agent&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms152763.aspx"&gt;How to: Monitor Replication Agents from Management Studio (SQL Server Management Studio)&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms152520.aspx"&gt;How to: Start Replication Monitor (Replication Monitor)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se è necessario è possibile integrare il proceso di sincronizzazione all'interno di un'applicazione tramite i &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms147890.aspx"&gt;Replication Management Objects (RMO)&lt;/a&gt;.&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/91913.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2008/03/27/91913.aspx</guid>
            <pubDate>Thu, 27 Mar 2008 22:31:43 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2008/03/27/91913.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/91913.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/91913.aspx</trackback:ping>
        </item>
        <item>
            <title>L'ordine di installazione</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2008/03/07/91556.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Mi era già capitato di vedere altre volte sul alcuni computer che all'apertura della Management Studio 2005 venisse visualizzata una dialog vuota, ebbene oggi mi è capitato su un computer XP SP2 appena installato su cui era stato installato il .NET Framework 2.0, l'installer 3.1, SQL Server 2005 Express with Advanced Services e al termine l'aggiornamento con Microsoft Update per installare hotfix (una novantina) e IE 7. Sul pc così configurato su cui la Management Studio 2005 non dava nessun problema è stato installato il .NET Framework 1.1 e da lì è comparsa la misteriosa dialog che non scompariva neppure disinstallato il .NET Framework 1.1.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;In questi casi applico una regola appresa nell'esperienza sistemistica &lt;strong&gt;installare i package e SP nell'ordine in cui sono stati rilasciati&lt;/strong&gt; (sulle hotfix di solito si può essere meno rigorosi dal punto di vista cronologico).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Infatti siccome il problema è abbastanza macroscopico da non passare inosservato significa che le cisrcostanze di installazione più comuni non portano al verificarsi del problema. Io steso devo dire di averlo visto un paio di volt, ma si solito nelle mie installazioni il .NET Framework 1.1 è sempre stato installato prima del 2.0.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Quindi ho scelto un punto di ripristino in cui la macchina era ancora pulita (il ripristino non elimina i file dei DB di SQL Server occorre farlo a mano, ma elimina le directory create successivamente) quindi ho seguito questìordine di installazione:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Microsoft .NET Framework Version 1.1 Redistributable Package (03/04/2003)&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;amp;displaylang=it"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;amp;displaylang=it&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Microsoft .NET Framework 1.1 Service Pack 1 (30/08/2004)&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;amp;FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;amp;FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Microsoft .NET Framework versione 2.0 Redistributable Package (22/01/2006)&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;amp;FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;amp;FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Windows Installer 3.1 Redistributable v2 (02/09/2005)&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=889482FC-5F56-4A38-B838-DE776FD4138C&amp;amp;displaylang=it"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=889482FC-5F56-4A38-B838-DE776FD4138C&amp;amp;displaylang=it&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 2 (17/02/2007)&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5B5528B9-13E1-4DB9-A3FC-82116D598C3D&amp;amp;displaylang=it"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=5B5528B9-13E1-4DB9-A3FC-82116D598C3D&amp;amp;displaylang=it&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Microsoft .NET Framework 2.0 Service Pack 1 (19/11/2007)&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;amp;FamilyID=79bc3b77-e02c-4ad3-aacf-a7633f706ba5"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;amp;FamilyID=79bc3b77-e02c-4ad3-aacf-a7633f706ba5&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Esecuzione di Microsoft Update che oltre alle varie fix installa:&lt;/font&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Windows Internet Explorer 7 per Windows XP SP2 (25/10/2007)&lt;br /&gt;
        &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9ae91ebe-3385-447c-8a30-081805b2f90b&amp;amp;DisplayLang=it"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=9ae91ebe-3385-447c-8a30-081805b2f90b&amp;amp;DisplayLang=it&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Aggiornamento della protezione per Windows XP (KB938127) per IE7 (13/08/2007)&lt;br /&gt;
        &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9f5da816-194c-478e-8a96-9421a0c52c9f&amp;amp;DisplayLang=it"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=9f5da816-194c-478e-8a96-9421a0c52c9f&amp;amp;DisplayLang=it&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;KB928366 per Microsoft .NET Framework 1.1 Service Pack 1 (10/07/2007)&lt;br /&gt;
        &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=281fb2cd-c715-4f05-a01f-0455d2d9ebfb&amp;amp;DisplayLang=it"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=281fb2cd-c715-4f05-a01f-0455d2d9ebfb&amp;amp;DisplayLang=it&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;Con quest'ordine di installazione che rispetta l'ordine di rilascio dei framework e relativi sp non ho più avuto problemi, chiarmente se si utilizza per il deploy strumenti SMS le corrette precedenze di installazione sono già rispettate e questo tipo di problemi non dovrebbero verificarsi.&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/91556.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2008/03/07/91556.aspx</guid>
            <pubDate>Fri, 07 Mar 2008 00:18:52 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2008/03/07/91556.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/91556.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/91556.aspx</trackback:ping>
        </item>
        <item>
            <title>Controllare le statistiche di rete</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2008/01/15/90693.aspx</link>
            <description>&lt;p&gt;Siccome ho dovuto mettere mano ad una rete non realizzata da me in cui di verificavano rallentamenti e problemi vari mi sono scritto un'utility basata su .NET 1.1 che eseguisse i vari comandi per controllare le impostazioni e le statistiche dire e ne catturasse l'output oltre a recuperare le statistiche IP, TCP e UDP via API. Per comodità le informazioni sono inserite in un RichTextBox ed è possibile eseguire una semplice stampa.&lt;/p&gt;
&lt;p&gt;La versione 1.0.0.0 di tle utility la trovare al seguente link (utilizzate tasto dx salva oggetto con nome):&lt;br /&gt;
&lt;font face="Arial"&gt;&lt;a target="_blank" href="http://xoomer.alice.it/ermannogoletto/MyLab/CheckNet2003v1.0.0.0.zip"&gt;http://xoomer.alice.it/ermannogoletto/MyLab/CheckNet2003v1.0.0.0.zip&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/90693.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2008/01/15/90693.aspx</guid>
            <pubDate>Tue, 15 Jan 2008 13:22:18 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2008/01/15/90693.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/90693.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/90693.aspx</trackback:ping>
        </item>
        <item>
            <title>Stampare un'immagine con .NET</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2007/11/08/89553.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Nel caso sia necessario stampare un'immagine rispettando le dimensioni della stessa e posizionandola in modo preciso sulla pagina il .NET Framework offre nativamente tutto ciò che ci serve. Occorre però fare alcune considerazioni sulle unità di misura che mi annoto a mia futura memoria e per eventaule utilità di altri:&lt;/font&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;font face="Arial"&gt; Per comodità si esprimeranno le misure dei margini che utilizzerò per posizionare l'immagine e le dimensioni della stessa in millimetri.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;L'unità di misura dei margini nell'oggetto DefaultPageSettings sono espresse in centesimi di pollice.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Oltre ai magini si deve tenere conto anche degli HardMarginX e HardMarginY espressi anch'essi in centesimi di pollice e che rappresentano i magini fisici della stampante. Gli HardMarginX e HardMarginY sono in margini al di sotto di cui non è possibile scendere e se utilizziamo i margini per posizionare l'immagine occorre ricordare che il margine reale e il margine impostao tramite DefaultPageSettings.Margins più HardMarginX per Left e HardMarginY per Top.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Le dimensioni delle immagini sono date in pixels e dpi (Dots per inch) quindi le dimensioni in pollici saranno Inches = Pixels/DPI che andranno ancora convertite in centesimi di pollice moltilicando per 100.&lt;/font&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Di seguito un banale esempio:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click&lt;br /&gt;
   'Impostazione margini left, right, top, bottom&lt;br /&gt;
   Util.SetMarginInMillimeters(Me.Document.DefaultPageSettings, 15, 15, 20, 20)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;   Me.PrintPreviewDialog.ShowDialog(Me)&lt;br /&gt;
End Sub&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;Private Sub Document_PrintPage(ByVal sender As Object, _&lt;br /&gt;
          ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Document.PrintPage&lt;br /&gt;
   'Impostazione stampa di una sola pagina&lt;br /&gt;
   e.HasMorePages = False&lt;/p&gt;
&lt;p&gt;   e.Graphics.DrawImage(My.Resources.Test, _&lt;br /&gt;
      e.MarginBounds.Left, e.MarginBounds.Top, _&lt;br /&gt;
      Util.PixelsToHundredthsOfInch(My.Resources.Test.Width, My.Resources.Test.HorizontalResolution), _&lt;br /&gt;
      Util.PixelsToHundredthsOfInch(My.Resources.Test.Height, My.Resources.Test.VerticalResolution))&lt;br /&gt;
End Sub&lt;/p&gt;
&lt;p&gt;Per l'esempio completo si veda il seguente link: &lt;a href="http://xoomer.alice.it/ermannogoletto/MyLab/TestPrintImageFile.zip"&gt;http://xoomer.alice.it/ermannogoletto/MyLab/TestPrintImageFile.zip&lt;/a&gt;&lt;br /&gt;
(per scaricarlo in caso di problemi tasto destro -&amp;gt; Salva con nome).&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/89553.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2007/11/08/89553.aspx</guid>
            <pubDate>Thu, 08 Nov 2007 20:02:08 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2007/11/08/89553.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/89553.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/89553.aspx</trackback:ping>
        </item>
        <item>
            <title>String.Format e i valori Boolean</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2007/08/20/87872.aspx</link>
            <description>&lt;p&gt;Leggendo questo &lt;a target="_blank" href="http://blogs.ugidotnet.org/corrado/archive/2003/08/20/779.aspx"&gt;post&lt;/a&gt; di Corrado mi è venuto in mente un modo per formattare i valori booleani partendo dal fatto che CInt(True ) è -1 e CInt(False) è 0:&lt;br /&gt;
&lt;strong&gt;String.Format("Il valore è &lt;font face="Arial"&gt;{0:Falso;Vero}.",CInt(booleanValue))&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/87872.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2007/08/20/87872.aspx</guid>
            <pubDate>Mon, 20 Aug 2007 02:44:03 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2007/08/20/87872.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/87872.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/87872.aspx</trackback:ping>
        </item>
        <item>
            <title>Preview di uno Screensaver in  un oggetto container</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2007/08/08/87583.aspx</link>
            <description>&lt;P&gt;Per fare il preview di uno Screensaver in un oggetto container &amp;#232; possibile utilizzare il parametro /p dello stesso. Di seguito il codice per visualizzare uno Screensaver in una PictureBox:&lt;/P&gt;
&lt;P&gt;Private Const ScreenSaverName As String = "ssbezier.scr"&lt;BR&gt;Private screenSaverProcess As System.Diagnostics.Process&lt;/P&gt;
&lt;P&gt;Dim startInfo As New System.Diagnostics.ProcessStartInfo&lt;BR&gt;startInfo.Arguments = "/p " &amp;amp; Me.PictureBox1.Handle.ToString()&lt;BR&gt;startInfo.FileName = ScreenSaverName&lt;BR&gt;startInfo.UseShellExecute = False&lt;BR&gt;screenSaverProcess = System.Diagnostics.Process.Start(startInfo)&lt;/P&gt;
&lt;P&gt;Per arrestare la visualizzazione dello Screensaver baster&amp;#224; terminare il processo:&lt;BR&gt;screenSaverProcess.Kill()&lt;BR&gt;screenSaverProcess.Close()&lt;BR&gt;screenSaverProcess.Dispose()&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/87583.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2007/08/08/87583.aspx</guid>
            <pubDate>Wed, 08 Aug 2007 22:18:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2007/08/08/87583.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/87583.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/87583.aspx</trackback:ping>
        </item>
        <item>
            <title>www.easydotnet.it ovvero il sito per chi vuole inziare a lavorare con .NET</title>
            <link>http://blogs.ugidotnet.org/Alexblog/archive/2007/05/29/79540.aspx</link>
            <description>&lt;P&gt;Voglio segnalare, anche se con estremo ritardo, questo spendido sito nato dalla collaborazione di un cuneese (&lt;A href="http://blogs.ugidotnet.org/Ugos/"&gt;Ugo Silato&lt;/A&gt;) e di un napoletano (Marco Siniscalco) che si propone di supportare chi vuole iniziare a lavorare con .NET.&lt;/P&gt;
&lt;P&gt;Quindi per quanti hanno in mente qualche articolo base sulla tecnologia .NET, ma non sapendo dove pubblicarlo hanno messo nel casetto l'iniziativa adesso non ci sono pi&amp;#249; scuse per nessuno (me compreso).&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/Alexblog/aggbug/79540.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ermanno Goletto</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alexblog/archive/2007/05/29/79540.aspx</guid>
            <pubDate>Tue, 29 May 2007 00:09:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alexblog/archive/2007/05/29/79540.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alexblog/comments/commentRss/79540.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alexblog/services/trackbacks/79540.aspx</trackback:ping>
        </item>
    </channel>
</rss>