Today, I was asked about manually disabling the Skype of Business Outlook plug-in for a customer where users have both Skype and Teams clients and are configured in Islands mode.
This is what I came up with. You can save it and drop it in a computer startup script as well as a user logon (since the script modifies both HKLM and HKCU). If users aren’t administrators on their machines, you may need to split the HKCU piece into a user logon script to ensure they don’t generate errors when trying to modify the registry.
I make attempts to back up the registry into a new value, but as with everything, please test before deploying. You can test it on your workstation by running interactively with the -Update switch. If you deploy via GPO / GPP, you can edit the [switch]$Update
, line to say [switch]$Update = $true
if necessary.
<# .SYNOPSIS Disable Skype for Business Plug-In .PARAMETER CloseOutlook Force closing of Outlook prior to running. .PARAMETER Update Update the value to 0. Current value is written to -LoadBehavior in appropriate registry key. .NOTES See https://support.microsoft.com/en-us/help/3097122/skype-meeting-control-is-not-displayed-on-outlook-2016 for more information on Skype plug-in. #> [cmdletbinding()] param ( [switch]$Update, [switch]$CloseOutlook = $true ) # Unload Skype for Business plug-in from Outlook try { # Test to see if Outlook is running; if so, close. If ($CloseOutlook) { If (Get-Process -Name Outlook -ea silentlycontinue) { Stop-Process -Name Outlook -Force; sleep 10 } } } catch { "Couldn't close Outlook"} # Click2Run Location 1, 32-bit Office on 32-bit Windows OR 64-bit Office on 64-bit Windows $c2r1 = (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior If ($c2r1 -ne $null) { Write-Verbose "Current value of C2R1 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($c2r1)."} If ($c2r1 -eq "0" -and $Update) { $Resultc2r1a = New-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $c2r1 | Out-Null $Resultc2r1b = Set-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0 <#catch { Write-Verbose "Unable to set value LoadBehavior in HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" }#> } if ($c2r1 -eq "0" -and $Update) { Write-Verbose "C2R1 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0." } # Click2Run Location 2, 32-bit Office on 64-bit Windows $Error.Clear() $c2r2 = (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior If ($c2r2 -ne $null) { Write-Verbose "Current value of C2R2 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($c2r2)." } If ($c2r2 -ne 0 -and $Update) { $Resultc2r2a = New-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $c2r2 | Out-Null $Resultc2r2b = Set-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0 If ($Error) { Write-Verbose $Error.Exception.ToString() } } if ($c2r2 -eq "0" -and $Update) { Write-Verbose "C2R2 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0." } # MSI Location 1, 32-bit Office on 32-bit Windows OR 64-bit Office on 64-bit Windows $Error.Clear() $msi1 = (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior If ($msi1 -ne $null) { Write-Verbose "MSI1 Current value of HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($msi1)." } If ($msi1 -ne $null -and $Update) { $Resultmsi1a = New-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $msi1 | Out-Null $Resultmsi1b = Set-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0 If ($Error) { Write-Verbose $Error.Exception.ToString() } } if ($msi1 -eq "0" -and $Update) { Write-Verbose "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0." } # MSI Location 2, 32-bit Office on 64-bit Windows $Error.Clear() $msi2 = (Get-ItemProperty "HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior If ($msi2 -ne $null) { Write-Verbose "Current value of HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($msi2)." } If ($msi2 -ne "0" -and $Update) { $Resultmsi2a = New-ItemProperty "HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $msi2 | Out-Null $Resultmsi2b = Set-ItemProperty "HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0 If ($Error) { Write-Verbose $Error.Exception.ToString() } } if ($msi2 -eq "0" -and $Update) { Write-Verbose "MSI2 HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0." } # HKCU for Skype Meeting Add-In $Error.Clear() $hkcuval = (Get-ItemProperty "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior if ($hkcuval -ne $null) { Write-Verbose "Current value of HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1\LoadBehavior is $($hkcuval)." } if ($hkcuval -ne "0" -and $Update) { $Resulthkcua = New-ItemProperty "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $hkcuval | Out-Null $Resulthkcub = Set-ItemProperty "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0 If ($Error) { Write-Verbose $Error.Exception.ToString() } } if ($hkcuval -eq "0" -and $Update) { Write-Verbose "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1\LoadBehavior is already set to 0." }
One Reply to “Manually Disable Skype for Business COM Add-In for Outlook”
Comments are closed.