Waves MaxxAudioPro Uninstaller (PowerShell)

Discussion in 'Scripting' started by the_jas718, Jul 7, 2025.

  1. the_jas718

    the_jas718 MDL Novice

    Apr 3, 2018
    8
    1
    0
    #1 the_jas718, Jul 7, 2025
    Last edited: Jul 8, 2025
    This is a work in progress, but was able to get most of the junk off my system, tbh Uninstalr is the only one I've seen that can detect it and fully remove it, but this gets close in theory.

    Code:
    <#
    This PowerShell script is designed to completely remove Waves MaxxAudioPro from a Windows system.
    
    Waves MaxxAudioPro is commonly auto installed on Dell systems, and doesn't include an uninstaller.
    
    Places MaxxAudioPro files and folders may be located include:
    - `C:\Program Files\Waves\MaxxAudioPro`
    - `C:\Program Files (x86)\Waves\MaxxAudioPro`
    - `C:\Users\<username>\AppData\Local\Waves`
    - `C:\Users\<username>\AppData\Roaming\Waves`
    - `C:\Users\Default\AppData\Local\Waves`
    - `C:\Users\Default\AppData\Roaming\Waves`
    
    It also creates registry keys, many of which contain some identifier like "Waves audio" or
    "MaxxAudioControl"
    
    This script should be run with administrative privileges.
    
    It is a good idea to back up your system or create a restore point before running this script.
    #>
    
    Write-Host "`nStarting MaxxAudioPro uninstallation script...`n" -ForegroundColor Green
    
    $IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
    if (-not $IsAdmin) {
       Write-Host "WARNING: This script is not running with administrative privileges. Some operations may fail." -ForegroundColor Red
       Write-Host "For best results, right-click PowerShell and select 'Run as administrator', then run this script again.`n" -ForegroundColor Yellow
    }
    
    function Remove-MaxxAudioFilesAndFolders {
       param (
           [string]$Path
       )
       if (Test-Path $Path) {
           Write-Host "Removing: $Path" -ForegroundColor Yellow
           Remove-Item -Path $Path -Recurse -Force -ErrorAction SilentlyContinue
       }
       else {
           Write-Host "Path not found: $Path" -ForegroundColor Gray
       }
    }
    
    function Remove-MaxxAudioRegistryKey {
       param (
           [string]$KeyPath
       )
       $removed = $false
       if (Test-Path "HKLM:\$KeyPath") {
           Write-Host "Removing registry key: HKLM:\$KeyPath" -ForegroundColor Yellow
           Remove-Item -Path "HKLM:\$KeyPath" -Recurse -Force -ErrorAction SilentlyContinue
           $removed = $true
       }
       if (Test-Path "HKCU:\$KeyPath") {
           Write-Host "Removing registry key: HKCU:\$KeyPath" -ForegroundColor Yellow
           Remove-Item -Path "HKCU:\$KeyPath" -Recurse -Force -ErrorAction SilentlyContinue
           $removed = $true
       }
       if ($KeyPath -like "Software\\Waves audio*" -or $KeyPath -like "SOFTWARE\\Waves audio*") {
           $DefaultUserKey = "Registry::HKEY_USERS\\.DEFAULT\\$KeyPath"
           if (Test-Path $DefaultUserKey) {
               Write-Host "Removing registry key: $DefaultUserKey" -ForegroundColor Yellow
               Remove-Item -Path $DefaultUserKey -Recurse -Force -ErrorAction SilentlyContinue
               $removed = $true
           }
       }
       if (-not $removed) {
           Write-Host "Registry key not found: $KeyPath" -ForegroundColor Gray
       }
    }
    
    # Remove 'WavesSvc' value from Run key (special case, not a whole key)
    $runKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
    if (Test-Path $runKey) {
       if (Get-ItemProperty -Path $runKey -Name "WavesSvc" -ErrorAction SilentlyContinue) {
           Remove-ItemProperty -Path $runKey -Name "WavesSvc" -ErrorAction SilentlyContinue
           Write-Host "Removed value 'WavesSvc' from HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -ForegroundColor Yellow
       }
    }
    
    $PathsToRemove = @(
       "C:\Program Files\Waves\MaxxAudio",
       "C:\Program Files (x86)\Waves\MaxxAudio",
       "C:\Users\$env:USERNAME\AppData\Local\WavesAudio",
       "C:\Users\$env:USERNAME\AppData\Roaming\Waves Audio",
       "C:\Users\$env:USERNAME\AppData\Local\Waves Audio",
       "C:\Users\$env:USERNAME\AppData\Roaming\Waves Audio",
       "C:\Users\Default\AppData\Local\Waves Audio",
       "C:\Users\Default\AppData\Roaming\Waves Audio",
       "C:\Users\Default User\AppData\Local\Waves Audio",
       "C:\Users\Default User\AppData\Roaming\Waves Audio",
       "C:\ProgramData\Waves"
    )
    
    $RegistryKeysToRemove = @(
       "SOFTWARE\Waves",
       "SOFTWARE\WOW6432Node\Waves",
       "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MaxxAudioPro",
       "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\MaxxAudioPro",
       "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Compatibility Assistant\\Store",
       "SOFTWARE\\Waves Audio",
       "SOFTWARE\\Waves Audio\\MaxxAudioPro",
       "SOFTWARE\\Waves Audio\\MaxxAudio",
       "SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION",
       "SOFTWARE\\Microsoft\\Tracing\\MaxxAudioPro_RASAPI32",
       "SOFTWARE\\Microsoft\\Tracing\\MaxxAudioPro_RASMANCS",
       "SOFTWARE\\Waves Audio",
       "SOFTWARE\\Waves Audio\\MaxxAudioPro",
       "SOFTWARE\\Waves Audio\\MaxxAudio"
    )
    
    $maxxProc = Get-Process -Name "MaxxAudioPro" -ErrorAction SilentlyContinue
    if ($maxxProc) {
       Write-Host "MaxxAudioPro.exe is currently running. Please close it before running this script." -ForegroundColor Red
       exit
    }
    
    $maxxProc = Get-Process -Name "WavesSvc64" -ErrorAction SilentlyContinue
    if ($maxxProc) {
       Write-Host "WavesSvc64.exe is currently running. Please close it before running this script. You can probably find it in Task Manager as 'Waves MaxxAudio Service Application'" -ForegroundColor Red
       exit
    }
    
    Write-Host "The following directories will be removed:" -ForegroundColor Cyan
    foreach ($Path in $PathsToRemove) {
       if (Test-Path $Path) {
           Write-Host $Path
       }
    }
    
    Write-Host "`nThe following registry keys will be removed:" -ForegroundColor Cyan
    foreach ($Key in $RegistryKeysToRemove) {
       if ((Test-Path "HKLM:\$Key") -or (Test-Path "HKCU:\$Key")) {
           Write-Host $Key
       }
    }
    
    Write-Host "`nThe following scheduled tasks will be removed:" -ForegroundColor Cyan
    $ScheduledTasks = Get-ScheduledTask | Where-Object { $_.TaskName -like "*MaxxAudio*" -or $_.TaskName -like "*Waves Maxx*" }
    foreach ($Task in $ScheduledTasks) {
       Write-Host $Task.TaskName
    }
    
    $Confirmation = Read-Host "`nDo you want to proceed with the removal? (yes/no)"
    if ($Confirmation -ne "yes") {
       Write-Host "Operation cancelled by the user." -ForegroundColor Red
       exit
    }
    
    foreach ($Path in $PathsToRemove) {
       Remove-MaxxAudioFilesAndFolders -Path $Path
    }
    
    foreach ($Key in $RegistryKeysToRemove) {
       Remove-MaxxAudioRegistryKey -KeyPath $Key
    }
    
    foreach ($Task in $ScheduledTasks) {
       Write-Host "Removing scheduled task: $($Task.TaskName)" -ForegroundColor Yellow
       Unregister-ScheduledTask -TaskName $Task.TaskName -Confirm:$false
    }
    
    Write-Host "`nMaxxAudioPro now be should be removed!`n" -ForegroundColor Magenta
    
    $FilesToRemove = @(
       "C:\Program Files\Waves\MaxxAudio\WavesSvc64.exe",
       "C:\Program Files\Waves\MaxxAudio\MaxxAudioAPOShell64.dll",
       "C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe"
    )
    
    foreach ($File in $FilesToRemove) {
       if (Test-Path $File) {
           Remove-Item -Path $File -Force -ErrorAction SilentlyContinue
           if (Test-Path $File) {
               Write-Host "WARNING: Could not remove $File" -ForegroundColor Red
               Write-Host "This is a common issue - try restarting and then deleting it manually." -ForegroundColor Yellow
           }
           else {
               Write-Host "Successfully removed: $File" -ForegroundColor Green
           }
       }
    }
    
    $ModelPath = "C:\Program Files\Waves\model"
    if (Test-Path $ModelPath) {
       $RemoveModel = Read-Host "`nA 'model' folder seems to be left over in the Waves directory. Do you want to remove it as well? (yes/no)"
       if ($RemoveModel -eq "yes") {
           Write-Host "Removing: $ModelPath" -ForegroundColor Yellow
           Remove-Item -Path $ModelPath -Recurse -Force -ErrorAction SilentlyContinue
       }
       else {
           Write-Host "`nSkipping removal of: $ModelPath" -ForegroundColor Cyan
       }
    }
    
    Write-Host "`nIf there is an empty Waves folder, you can delete it manually.`nPlease restart your computer to complete the uninstallation process." -ForegroundColor Blue
    
     
  2. kaljukass

    kaljukass MDL Guru

    Nov 26, 2012
    3,472
    1,360
    120
    I wonder if it's really in the locations shown in this script? Or is it some kind of special version?
    I have it all completely elsewhere.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. the_jas718

    the_jas718 MDL Novice

    Apr 3, 2018
    8
    1
    0
    Curious if you could share where it is on your system? I would like to further improve this script
     
  4. kaljukass

    kaljukass MDL Guru

    Nov 26, 2012
    3,472
    1,360
    120
    Dell has been installing it as a Windows app and storing it in the Windows Store for years already.
    Here is for example my current and this is dell laptop which warranty just expired, but I have some a bit older Dell pc-s too and there is all the same.
    Even if You download it from Dell Support / Drivers... as
    Update Package for MS Windows 64-Bit.
    File Name: Waves-MaxxAudio-Pro-Application_VWPKK_WIN64_1.1.67.0_A03_04.EXE
    File Size: 12.03 MB
    Format Description:
    Dell Update Packages in native Microsoft Windows 64-bit format do not require that Microsoft WOW64 be installed on the Microsoft Windows Server.
    It will install it as Windows App.

    So, mine is located here
    Waves MaxxAudio Pro for Dell 2020
    C:\Program Files\WindowsApps\wavesaudio.maxxaudioprofordell2020_3.0.98.0_x64__fh4rh281wavaa
    Computer\HKEY_USERS\S-1-5-21-970072884-1565574141-2027692474-1001\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\SystemAppData\WavesAudio.MaxxAudioProforDell2020_fh4rh281wavaa
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...