Visualizzazione post con etichetta Visual Studio. Mostra tutti i post
Visualizzazione post con etichetta Visual Studio. Mostra tutti i post

lunedì 19 febbraio 2018

VSTO: Creare un componente aggiuntivo per l'installazione di un payload

VSTO (Visual Studio Tools for Office) è un insieme di strumenti di sviluppo disponibili sotto forma di runtime e di add-in di Visual Studio che consente alle versioni di MS Office 2003 e successive di  ospitare il .NET Framework Common Language Runtime (CLR) e permettere la realizzazione di funzionalità attraverso .NET.
I componenti aggiuntivi VSTO possono essere installati, nel proprio profilo, anche dagli utenti che non dispongono di privilegi amministrativi ed eseguiti ad ogni avvio dell'applicazione MS Office per cui sono stati realizzati (ad es. Excel). Tale comportamento rappresenta un grosso problema per la sicurezza. L'add-in può essere creato in modo che venga avviato un payload (una routine malevola). In questi casi AppLocker, nella sua configurazione di default, non blocca l'esecuzione del codice.

Vediamo come creare un add-in VSTO in Visual Studio.
  • Avviare Visual Studio e creare un nuovo progetto. Dal menu File selezionare Nuovo quindi Progetto;
    Visual Studio, Nuovo Progetto
    FIG 1 - Visual Studio, Nuovo Progetto
  • Alla richiesta di selezionare il modello da utilizzare, selezionare Visual C# quindi Office/SharePoint;
    Visual Studio, Progetto in Visual C# - Office/SharePoint
    FIG 2 - Visual Studio, Progetto in Visual C# - Office/SharePoint
  • Se nel sistema non è già installato verrà richiesto di installare Office Developer Tools (FIG 2). Eseguire un doppio click su Installa progetti Office Developer Tools, attendere il download e seguire le istruzioni a video per portare a termine l'installazione di tale componente.
    Visual Studio, Installazione Office Developer Tools
    FIG 3 - Visual Studio, Installazione Office Developer Tools
  • Terminata l'installazione di Office Developer Tools avviare nuovamente Visual Studio, creare un nuovo progetto Visual C# quindi selezionare Office/SharePoint. Selezionare per quale applicazione MS Office si intende sviluppare il componente aggiuntivo (in questo articolo è stato selezionata l'opzione Componente aggiuntivo VSTO per Word 2013 e 2016), assegnare un nome al progetto e confermare cliccando sul pulsante OK.
    Visual Studio, selezione componente aggiuntivo da creare
    FIG 4 - Visual Studio, selezione componente aggiuntivo da creare
  • A questo punto Visual Studio provvederà a creare il template del nostro add-in. Per fare in modo che al caricamento del componente aggiuntivo venga eseguita una particolare operazione, bisogna modificare la funzione ThisAddIn_Startup. Aggiungendo il seguente codice, come mostrato anche in FIG 5, all'avvio del componente aggiuntivo verrà avviata la calcolatrice.
    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = @"c:\windows\system32\calc.exe";
    proc.Start();
    Visual Studio, Modifica della funzione ThisAddIn_Startup per richiamare un file eseguibile (calc.exe)
    FIG 5 - Visual Studio, Modifica della funzione ThisAddIn_Startup per richiamare un file eseguibile (calc.exe)
  • Dal menu Progetto selezionare Proprietà;
    Visual Studio, Proprietà progetto
    FIG 6 - Visual Studio, Proprietà progetto
  • Nella sezione Applicazione impostare il .NET Framework da utilizzare;
    Visual Studio, Framework di destinazione
    FIG 7 - Visual Studio, Framework di destinazione
  • Selezionare la sezione Firma. Firmare i manifesti ClickOnce con un certificato valido consente la distribuzione e l'installazione attraverso la tecnologia ClickOnce di Microsoft. Firmare i manifesti con un certificato non valido, d'altra parte, potrebbe impedire l'installazione/esecuzione del payload attraverso ClickOnce. Si può testare tale comportamento firmando i manifesti con un certificato autofirmato cliccando su Crea certificato di prova... e confermando cliccando su OK senza immettere alcuna password.
    Visual Studio, Firma manifesti ClickOnce
    FIG 8 - Visual Studio, Firma manifesti ClickOnce
  • Selezionare Pubblica. In tale sezione è possibile impostare le opzioni per la distribuzione del pacchetto come ad esempio la versione, prerequisiti, dipendenze ecc. In Percorso pubblicazione specificare un path lasciando tutto il resto impostato come di default, quindi cliccare sul pulsante Pubblica.
    Visual Studio, Pubblica componente aggiuntivo
    FIG 9 - Visual Studio, Pubblica componente aggiuntivo
  • Nella cartella Release del progetto, verranno generati i file del componente aggiuntivo. Per procedere all'installazione basta eseguire il file con estensione .VSTO.
    File componente aggiuntivo VSTO
    FIG 10 - File componente aggiuntivo VSTO
  • Terminata l'installazione, avviando MS Word verrà caricato anche il componente aggiuntivo che, a sua volta,  provvederà ad avviare la calcolatrice.
    VSTO, all'avvio di MS Word e dell'add-in viene avviata la calcolatrice
    FIG 11 - VSTO, all'avvio di MS Word e dell'add-in viene avviata la calcolatrice


lunedì 20 aprile 2015

C# : Verificare la versione di Outlook installata

In questo articolo mostrerò come individuare la versione di Microsoft Outlook installata, sulla propria postazione o su una workstation remota, utilizzando C#
L'operazione può essere effettuata in modi diversi e l'applicazione che ho creato è molto semplice e offre ampi margini di miglioramento. Quello che andrò a fare è semplicemente verificare la versione del file Outlook.exe
OutlookVer
FIG 1 - OutlookVer

Come primo passo chiedo all'utente se intende verificare la versione di Outlook installata sulla workstation locale o su una workstation remota. Nel caso di postazione remota verifico se la postazione è raggiungibile.
Il passo successivo consiste nell'individuare il path (percorso) del file Outlook.exe. Per conoscere il path di installazione di outlook vado ad interrogare il valore stringa Path presente nella seguente chiave di registro
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\OUTLOOK.EXE

Per la workstation locale utilizzo l'istruzione 
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry32).OpenSubKey(RegKey);
mentre per verificare una postazione remota utilizzo l'istruzione
RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, textBoxWKSName.Text).OpenSubKey(RegKey);

Una volta individuato il path del file Outlook.exe, verifico la sua versione tramite l'istruzione 
FileVersionInfo.GetVersionInfo(_path)

A questo punto non resta che visualizzare a video un messaggio con la versione di Outlook installata
Versione di Outlook
FIG 2 - Versione di Outlook
Di seguito è possibile scaricare i file sorgenti del progetto. Il progetto può essere aperto e modificato tramite Visual Studio oppure tramite ambienti di sviluppo di terze parti come ad es. SharpDevelop
DOWNLOAD