With everyone working remote these days, it is nice to follow phone/video conference etiquette and mute your microphone if you are not the speaker. I was surprised to learn that there isn’t a dedicated mute key on most keyboards to mute your microphone. The mute button on my laptop and keyboard only mute the speakers. So here’s a script I put together that mutes your microphone. It relies on registry values so it is more dependable than hacking your system by emulating send keys values. This works best with keyboards or mice with customization capabilities. I’m using a Logitech keyboard. Alternatively, you can also use keyboard shortcuts.
What you’ll need before starting.
* Administrative or elevated privileges to your computer
* A little determination
Step 1: Identify your microphone registry values. Yes, this isn’t for the faint of heart.
Step 2: Modify Powershell script below. Replace “Placeholder” with your register value. Save file as “mute.ps1”.
Step 3. Create a simple .bat script that calls the PowerShell script with the proper execution permissions. (note, you may also need to run this code in an administrative PowerShell window. “set-executionpolicy unrestricted” if the code is still not executing. Call the file “mute.bat”.
Step 4: Update Folder ownership within Regedit for the folder containing the “microphone array” item. Change it from “System” to all users and applications.
Step 5: Customize keyboard key to reference this “mute.bat” script when the button is pressed.
Note, I implemented this on Windows 10 Pro. Version 1903. The script does modify a single Registry value so you may want get buy-in from your IT department prior to incorporating this.
Code for step 2: Here’s the Powershell code. Note, you will only have to change the “PLACEHOLDER” value.
$micStatus="Enabled" $Key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{PLACEHOLDER}' if(Test-Path $key){ $item = Get-ItemProperty -path $Key -Name DeviceState $item.DeviceState } else { Write-Host 'path not found' } if( $item.DeviceState -Match "0") { Write-Host 'Mic Enabled' Set-ItemProperty -Path $Key -Name "DeviceState" -Value '1' -Force | Out-Null $micStatus="Enabled" } else { Write-Host 'Mic Disabled' Set-ItemProperty -Path $Key -Name "DeviceState" -Value '10000001' -Force | Out-Null $micStatus="Disabled" } Add-Type -AssemblyName System.Windows.Forms $global:balmsg = New-Object System.Windows.Forms.NotifyIcon $path = (Get-Process -id $pid).Path $balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path) $balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning $balmsg.BalloonTipText = 'Mic status of apps not updated' $balmsg.BalloonTipTitle = "Microphone $micStatus" $balmsg.Visible = $true $balmsg.ShowBalloonTip(50000)
“mute.bat” code for Step 3
powershell.exe -executionpolicy bypass -file "C:\Users\C\Documents\work\mute.ps1"
Step: 4 – Error message you will see if you don’t update permissions.
Before mapping the mute.bat script to the keyboard, attempt running the script by double clicking the .bat file. After the script executes, you should see a notification message at the bottom right of Windows. You can also see the notification if you expand the notifications Window. Screenshot below. Navigate to sound settings to ensure the microphone was indeed disabled.
This script can also be retro fitted to disable web cams with a single keyboard press. You’ll just need to identify the registry values for the webcam. Dr Scripto also has an alternative method for disabling the webcam.