为了防止有人想在C#中执行此操作,下面是一些代码,用于禁用多个COM加载项,这些加载项由名称通过数组参数指定:
private void TryDisableCommAddIns(Microsoft.Office.Interop.Excel.Application app, string[] addInsToDisable)
{
if(addInsToDisable == null)
{
return;
}
COMAddIns comAddIns = app.COMAddIns;
foreach (string addInName in addInsToDisable)
{
//If you have a logger you could log a debug statement such as: $"Disabling COM AddIn: {addInName}"
COMAddIn commAddInOrNull = GetCommAddInOrNull(comAddIns, addInName);
if(commAddInOrNull != null)
{
commAddInOrNull.Connect = false;
}
}
}
private COMAddIn GetCommAddInOrNull(COMAddIns comAddIns, string addInName)
{
try
{
return comAddIns.Item(addInName);
}
catch (Exception)
{
//If you have a logger you could log a debug statement such as: $"No COM AddIn found with name: {addInName}"
return null;
}
}