ArcMap のエクステンション ダイアログのチェック状態を変更する方法

//エクステンションのチェックを外す操作はIExtension::Shutdownイベント内では効果がない


//C#
//http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/inex.html#//0000000

IUID pUID = new UIDClass();
pUID.Value = "{3C5059FE-9F15-401A-94ED-EED914D73E3E}";  //Spatial Anayst

IExtensionConfig pExtensionConfig = (IExtensionConfig)ArcMap.Application.FindExtensionByCLSID((UID)pUID);;

if(pExtensionConfig != null)
{
    if(pExtensionConfig.State == esriExtensionState.esriESEnabled)
    {
        pExtensionConfig.State = esriExtensionState.esriESDisabled;

        MessageBox.Show("Spatial Analyst を無効にしました。");
    }
    else
    {
        MessageBox.Show("Spatial Analyst は有効ではありませんでした。");
    }
}
else
{
    MessageBox.Show("Spatial Analyst はインストールされていません。");
}
'VBA
'http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//0042000000r8000000
Sub EnableExtension()
  Dim pUID As New UID
  pUID.Value = "{3C5059FE-9F15-401A-94ED-EED914D73E3E}"  'Spatial Analyst
  Dim pExtConfig As IExtensionConfig
  Set pExtConfig = Application.FindExtensionByCLSID(pUID)

  If Not pExtConfig Is Nothing Then
    If (Not pExtConfig.State = esriESUnavailable) Then
      pExtConfig.State = esriESEnabled	'有効
      pExtConfig.State = esriESDisabled	'無効
    Else
      MsgBox "No licenses available"
    End If
  Else
    MsgBox "Extension is not installed"
  End If
End Sub