Uninstalling the CyberFOX DNS Roaming Client
Learn how to effectively uninstall the CyberFOX DNS Roaming Client to improve system performance and regain control of your network settings.
Table of Contents
Overview
This article explains how to silently and cleanly uninstall the CyberFOX DNS Roaming Client from Windows devices. Uninstalling the agent removes DNS policy enforcement and removes the device from active monitoring in the CyberFOX DNS Filtering Portal.
What the Uninstall Process Does
Removing the DNS Roaming Client:
- Stops DNS interception and routing through CyberFOX Filtering.
- Removes the agent service (
CyberFOX DNS Client). - Deregisters the device from the DNS Filtering dashboard.
- Restores the system's default DNS resolver behavior.
Use the uninstall method below when offboarding devices, repurposing machines, or migrating to a new environment.
Platform‑Specific Uninstall Steps
Windows (Standard Uninstall Command)
The client can be removed silently using the following command:
"%ProgramFiles%\CyberFOX DNS Client\unins000.exe" /SP /SUPPRESSMSGBOXES /VERYSILENT /NORESTART
Execution notes:
- Must be run with administrative privileges.
- The device must be restarted to fully release DNS hooks (RMM can trigger later).
- Recommended for RMM automation, PowerShell, batch scripts, or GPO.
Windows (Manual Uninstall)
- Open Control Panel → Programs and Features.
- Locate CyberFOX DNS Client.
- Click Uninstall.
- Restart the device.
Advanced Use Cases
RMM / MSP Automation
- Use global scripts to remove stale clients.
- Pair uninstall commands with a hostname check to confirm device identity.
- Schedule bulk customer migrations using automated tasks.
Hybrid Environments
- Use uninstall routines during OS imaging or workstation refresh cycles.
- Validate removal by checking that outbound DNS no longer resolves via the CyberFOX network.
Troubleshooting
Agent Still Appears in Portal
- Portal may take up to 5 minutes to refresh device status.
- Ensure the device is online for its final heartbeat before uninstall.
- Manually remove the stale entry under Roaming Clients if needed.
DNS Still Appears Redirected
- Confirm reboot was performed.
- Verify no GPO or third‑party agent is forcing DNS.
- Check network adapter DNS settings for static overrides.
Uninstall via Powershell
- Confirm Program Files path uses the correct architecture.
- Run PowerShell as administrator: DNS_Uninstall.ps1
# Copyright (c) 2026 CyberFOX LLC # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of the AutoElevate nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL OPENDNS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <# .SYNOPSIS Uninstalls CyberFOX DNS Client using unins000.exe after stopping services. .DESCRIPTION - Checks for and stops: "CyberFOX DNS over HTTPS Proxy Updater Service" "CyberFOX DNS over HTTPS Service" - Runs: "C:\Program Files\CyberFOX DNS Client\unins000.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART - Returns automation-friendly exit codes #> # ------------------------- # Configuration # ------------------------- $UninstallerPath = "C:\Program Files\CyberFOX DNS Client\unins000.exe" $UninstallArgs = "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART" $ServiceNames = @( "CyberFOX DNS over HTTPS Proxy Updater Service", "CyberFOX DNS over HTTPS Service" ) # [1](https://support.cyberfox.com/dns-rc/agent-based-devices)[2](https://passboss2-my.sharepoint.com/personal/oparry_cyberfox_com/Documents/Microsoft%20Teams%20Chat%20Files/CyberFOX%20DNS%20Client%200.0.5%20Robopack%20App%20Documentation.pdf?web=1) # Exit codes $EXIT_SUCCESS = 0 $EXIT_NOT_INSTALLED = 0 # treat as success for automation $EXIT_UNINSTALL_FAIL = 1 $EXIT_SERVICE_FAIL = 2 function Get-TimeStamp { return "[{0:MM/dd/yy} {0:HH:mm:ss}]" -f (Get-Date) } function Stop-ServiceIfExists { param( [Parameter(Mandatory=$true)][string]$Name, [int]$TimeoutSeconds = 30 ) $svc = Get-Service -Name $Name -ErrorAction SilentlyContinue if ($null -eq $svc) { Write-Host "$(Get-TimeStamp) Service not found (OK): $Name" return $true } Write-Host "$(Get-TimeStamp) Found service: $Name (Status: $($svc.Status))" if ($svc.Status -eq 'Stopped') { Write-Host "$(Get-TimeStamp) Service already stopped: $Name" return $true } try { Write-Host "$(Get-TimeStamp) Stopping service: $Name" Stop-Service -Name $Name -Force -ErrorAction Stop # Wait up to TimeoutSeconds for it to stop $deadline = (Get-Date).AddSeconds($TimeoutSeconds) do { Start-Sleep -Seconds 2 $svc.Refresh() $svc = Get-Service -Name $Name -ErrorAction SilentlyContinue if ($null -eq $svc) { break } # service disappeared during uninstall/stop attempt } while ($svc.Status -ne 'Stopped' -and (Get-Date) -lt $deadline) $svc = Get-Service -Name $Name -ErrorAction SilentlyContinue if ($null -ne $svc -and $svc.Status -ne 'Stopped') { Write-Host "$(Get-TimeStamp) ERROR: Service did not stop in time: $Name" return $false } Write-Host "$(Get-TimeStamp) Service stopped: $Name" return $true } catch { Write-Host "$(Get-TimeStamp) WARN: Failed to stop service $Name. $($_.Exception.Message)" return $false } } # ------------------------- # Main # ------------------------- Write-Host "$(Get-TimeStamp) Starting CyberFOX DNS Client uninstall..." # If the uninstaller isn't present, treat as already uninstalled if (-not (Test-Path $UninstallerPath)) { Write-Host "$(Get-TimeStamp) Uninstaller not found: $UninstallerPath" Write-Host "$(Get-TimeStamp) Application may already be uninstalled." exit $EXIT_NOT_INSTALLED } # Stop services before uninstall $allStopped = $true foreach ($svcName in $ServiceNames) { if (-not (Stop-ServiceIfExists -Name $svcName -TimeoutSeconds 30)) { $allStopped = $false } } if (-not $allStopped) { Write-Host "$(Get-TimeStamp) ERROR: One or more services could not be stopped. Aborting uninstall." exit $EXIT_SERVICE_FAIL } # Run the uninstaller silently try { Write-Host "$(Get-TimeStamp) Running uninstaller: $UninstallerPath $UninstallArgs" $p = Start-Process -FilePath $UninstallerPath -ArgumentList $UninstallArgs -Wait -PassThru -WindowStyle Hidden Write-Host "$(Get-TimeStamp) Uninstaller exit code: $($p.ExitCode)" if ($p.ExitCode -ne 0) { Write-Host "$(Get-TimeStamp) ERROR: Uninstall reported failure (exit code $($p.ExitCode))." exit $EXIT_UNINSTALL_FAIL } Write-Host "$(Get-TimeStamp) CyberFOX DNS Client successfully uninstalled." exit $EXIT_SUCCESS } catch { Write-Host "$(Get-TimeStamp) ERROR: Uninstall process failed to run. $($_.Exception.Message)" exit $EXIT_UNINSTALL_FAIL } - Verify service is not locked by security tools.
Security & Sync Behavior
- Once uninstalled, the device no longer sends DNS telemetry.
- Policy enforcement stops immediately after the agent service is removed.
- No personal data is retained on the endpoint after uninstall.
- Deregistration does not affect other CyberFOX products (Password Boss, AutoElevate, etc.).