vi posto il programma:

in Form1.vb:

codice:
Imports Microsoft.Win32
Public Class FormAddIn
    Dim strKey As String = "SOFTWARE\Microsoft\Office\Outlook\Addins\MyOutlookAddIn.Connect"
    Dim ParentKey As RegistryKey = Registry.LocalMachine, Key As RegistryKey
    Dim Valore As Integer, ValueName As String = "LoadBehavior"

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Call SettaInizio()
    End Sub

    Private Sub cmdAddIn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdAddIn.Click
        Select Case cmdAddIn.Text.ToLower
            Case "attiva"
                Try
                    Key = ParentKey.OpenSubKey(strKey, True)
                    Key.SetValue(ValueName, 3)
                Catch ex As Exception
                    Call Errore(ex)
                End Try
            Case "disattiva"
                Try
                    Key = ParentKey.OpenSubKey(strKey, True)
                    Key.SetValue(ValueName, 2)
                Catch ex As Exception
                    Call Errore(ex)
                End Try
            Case "registra"
                Try
                    ParentKey.CreateSubKey(strKey)
                    Key = ParentKey.OpenSubKey(strKey, True)
                    Key.SetValue(ValueName, 3)
                Catch ex As Exception
                    Call Errore(ex)
                End Try
        End Select
        Key = Nothing
        Call SettaInizio()
    End Sub

    Private Sub cmdChiudi_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdChiudi.Click
        End
    End Sub

    Sub SettaInizio()
        Try
            If ControllaProgramma("outlook") = False Then 'va in errore qui
                Dim strErr As String
                strErr = "Impossibile Continuare! Outlook risulta aperto."
                Throw New Exception(strErr)
            End If
        Catch ex As Exception
            Call Errore(ex)
        End Try
        Try
            Key = ParentKey.OpenSubKey(strKey)
            If Key IsNot Nothing Then
                Valore = Key.GetValue("LoadBehavior")
                Select Case Valore
                    Case 0, 2
                        cmdAddIn.Text = "Attiva"
                    Case 3
                        cmdAddIn.Text = "Disattiva"
                End Select
            Else
                cmdAddIn.Text = "Registra"
            End If
            Key = Nothing
        Catch ex As Exception
            Call Errore(ex)
        End Try
    End Sub
    Sub Errore(ex as Exception)
        Dim strMsg As String, strTitle As String
        strMsg = ex.Message
        strTitle = "Errore!"
        MessageBox.Show(strMsg.ToUpper, strTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End 'va in errore anche qui
    End Sub
End Class
in module1.vb:

codice:
Module Module1
    Function ControllaProgramma(ByVal strName As String)
        Dim Funzione As Boolean, ProcProg As Process()
        ProcProg = Process.GetProcessesByName(strName)
        Funzione = True
        If ProcProg.GetUpperBound(0) > -1 Then Funzione = False
        ProcProg = Nothing
        Return Funzione
    End Function
End Module
il form è composto da due pulsanti: cmdAddIn e cmdChiudi.

grazie