Ampiamente previsto dagli specialisti è arrivata la variante di WannaCry: il suo nome è Petya, ma per alcuni è WannaCry v2 o anche WannaCry v3.

Anche in questo caso si tratta di un ramsonware che cripta i file sul pc oggetto, e li rende inutilzzaibili sino a quando non si paga un riscatto.

Purtroppo le sue caratteristiche lo rendono più aggressivo del suo predecessore: questo è anche dovuto al fatto che mentre i computer che per primi sono stati infettati da WannaCry, e che successivamente hanno creato l'effetto valanga che ha interessato tutto il mondo, erano poche centinaia di unità, nel caso di Petya sembra che il ceppo iniziale sia stato depositato su milioni di computer, grazie all'hacking di un famoso sito ucraino che distribuisce anche aggiornamenti software.

Il metodo è quello già conosciuto: quando il ramsonware infetta un pc cripta tutti i file ivi contenuti, e successivamente lo stesso pc infetta tutti gli altri pc presenti nella stessa LAN.

Mentre WannaCry usava come metodo di propagazione il vecchio SMB v1, Petya usa anche WMIC,Windows Management Instrumentation Commandline.

Oss.: SMB è il protocollo che viene usato dai computer Windows per rendere file e cartelle via share di rete. Di questo protocollo ne esistono diverse versioni, e in modo silente quando due computer vogliono scambiarsi file si accordano su quale versione usare. La versione 1 del protocollo, vecchia di 30 anni, è ancora utilizzata in molti ambiti: per esempio se uno dei pc coinvolti è XP, oppure se insistono in rete vecchissime versione di Linux.

Oss.: WMIC è un pezzo di WMI Windows Management Instrumentation, che in pratica permette di interrogare un pc remoto ottenendo da questo alcune le sue caratteristiche ed eventualmente modificarne altre.

Avete un fantastico software che viene eseguito in console mode ??

Avete necessità di dotarlo di una progress bar per farlo sembrare "più figo" ??

Per quanto possa essere figa una Console App ovviamente......

Allora questo post fa per Voi !

Recentemente mi trovavo in una situazione simile, e dopo aver ricercato in rete ho trovato la seguente soluzione, elegante ed efficace, che desidero condividere con Voi.

Infatti è inutile inventarsi soluzioni esotiche e/o personalizzate: affidatevi senza timore al pacchetto NuGet ShellProgressBar: è semplice, gratuito (MIT License) e funziona perfettamente.

Vi assicuro di non centrare assolutamente nulla con l'autore del software oggetto di questo scritto (tra l'altro gratuito): semplicemente è un buona soluzione che intendo condividere.

Sono certo che in giro si trovano altre soluzione molto più articolate, ma questa che presente è realmente semplice e ritengo più che soddisfacente per la maggior parte degli usi.

Sottotitolo: Tutto quello che Vi serve sapere per creare un bel documento Microsoft Word da codice C#.

L'esigenza è semplice: ottenere dai dati gestiti dal nostro fantastico software un documento Microsoft Word che riporti un'analisi degli stessi.

Manco a dirlo il documento deve avere delle tabelle, con i dati presentati in modo sensato e graficamente convincente.

L'attività di per se è abbastanza semplice, ma ritengo non sia altrettanto semplice trovare tutte le informazioni necessarie.

Per esempio come mettere una tabella nell'header del documento in modo tale che lo stesso sia riportato in ogni pagina ?? Come annegare dentro questa un'immagine ?? Come porre dei testi in verticale ? Semplici domande e le cui risposte non sono facilmente rintracciabili.

Ci ho messo un pò a reperire tutte le dritte necessarie, per cui ho pensato di raggrupparle tutte insieme per aiutare altri che possano avere un'esigenza simile.

Per iniziare occorre dire che tutte le funzionalità qui presentate usano esclusivamente le API messe a disposizione da Microsof Office: è banale sottolinearlo, ma occorre che sia sulla macchina di sviluppo su cui andremo a implementare il codice, che sulla macchina destinataria dell'utilizzatore, il pacchetto office deve essere correttamente installato e funzionante.

Con il rischio di offenderVi ulteriormene devo anche dire che occorre anche aggiungere al progetto il riferimento a Microsft Office Object Library. Fatto questo avremo la possibilità di accedere a tutte le funzioni viste nel seguito.

Altrimenti..... No office... No party.....

In questi giorni mi è capitata la necessità di investigare le cause di un comportamento anomalo che occorreva in modo casuale in un software di nostra produzione, e che si appoggia su un'istanza di database di Sql Server.

Il punto incriminato era una stored procedure, che veniva eseguita all'interno di una transazione molto complessa, con diversi punti del codice e diversi alltri oggetti di Sql Server richiamati alla bisogna.

La cosa più ovvia è stata mettere un sistema che permettesse di eseguire il log degli eventuali errori in modo da eseguire in modo efficace l'Handling SQL Server Errors.

Dopo un pò di ricerche ho pensato di porre il codice incriminato un blocco try/catch, in modo da poter analizzare nel seguito le cause di questa malfunzione.

Ignorantemente non conscevo la possibilità di utilizzare in una stored procedure i blocchi try/cath, al fine di monitorare eventuali errori.