Created
August 2, 2025 22:18
-
-
Save griffeth-barker/a066232904e1ba87b5e50573afe0c5eb to your computer and use it in GitHub Desktop.
CCTaskKiller: A simple and unofficial Windows utility for killing running Adobe Creative Cloud related processes. (Extremely rough, AI-generated code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
.SYNOPSIS | |
A PowerShell script to manage and kill Adobe-related processes on Windows 10. | |
.DESCRIPTION | |
This script provides a graphical interface to identify and forcefully stop all processes related to Adobe applications | |
running on the system. It is designed to be used with administrative privileges. | |
.PARAMETER None | |
No parameters are required to run this script. | |
.EXAMPLE | |
PS:\> Start-Process powershell.exe -ArgumentList "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File .\CCTaskKiller_Win10.ps1" | |
This command will launch the CCTaskKiller GUI, allowing you to view and kill Adobe-related processes. | |
.INPUTS | |
None. | |
.OUTPUTS | |
None. | |
.NOTES | |
This script requires administrative privileges to run. | |
Use at your own risk. Ungracefully stopping Adobe processes may lead to system instability or data loss. | |
This script is provided "as is" without any warranties nor guarantees. | |
Ensure you have the necessary permissions to run scripts on your system. | |
#> | |
#requires -RunAsAdministrator | |
Add-Type -AssemblyName PresentationFramework | |
$processPatterns = @( | |
"3D toolkit", | |
"acrobat.com", | |
"acrobat", | |
"acrord32", | |
"adobe cc", | |
"adobe cef helper", | |
"adobe desktop service", | |
"adobe dng converter", | |
"adobe encore dvd", | |
"adobe encore", | |
"adobe extension manager", | |
"adobe golive", | |
"adobe installer", | |
"adobeupdateservice", | |
"adobeipcbroker", | |
"cclibrary", | |
"adobenotificationclient", | |
"ccxprocess", | |
"agsservice", | |
"agmservice", | |
"logtransport2", | |
"adobegcclient", | |
"acrotray", | |
"acrobatnotificationclient", | |
"adobecollabsync", | |
"adobeextensionservice", | |
"adobe media encoder", | |
"adobe onlocation", | |
"adobe premiere elements", | |
"adobe premiere pro", | |
"adobe sing glyphlet manager cs3", | |
"adobe soundbooth", | |
"adobe stock photos", | |
"adobe updater", | |
"adobearm", | |
"adobecaptivate", | |
"adobecc", | |
"adobeupdateinstallmgr", | |
"adobeupdatemanager", | |
"adobeupdater", | |
"adobeupdaterinstallmgr", | |
"afterfx", | |
"audition", | |
"bridge", | |
"bridgeproxy", | |
"creativecloud", | |
"creative cloud", | |
"dreamweaver", | |
"dynamiclinkmanager", | |
"encore", | |
"fireworks", | |
"fireworks10", | |
"flash video encoder", | |
"flash", | |
"flashplayer", | |
"illustrator", | |
"imageready", | |
"incopy", | |
"indesign", | |
"indesignserver", | |
"indesignserverservice", | |
"lightroom", | |
"photoshop elements", | |
"photoshop", | |
"photoshopelementseditor", | |
"photoshopelementsorganizer", | |
"photoshopserver", | |
"premiere", | |
"acrodist", | |
"Adobe Crash Processor", | |
"adobe_licensing_wf_acro", | |
"adobe_licensing_wf_helper_acro", | |
"coresync", | |
"creative cloud helper" | |
) | |
[xml]$xaml = @" | |
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |
Title="AdobeTaskManager" Height="420" Width="400" WindowStartupLocation="CenterScreen" | |
Background="#222222"> | |
<StackPanel Margin="16,8,16,16" VerticalAlignment="Top" HorizontalAlignment="Center" Background="#222222"> | |
<TextBlock Text="WARNING:" FontWeight="Bold" FontSize="14" TextAlignment="Left" HorizontalAlignment="Left" | |
Margin="0,0,0,2" Foreground="#FF5555"/> | |
<TextBlock Name="WarningText" TextWrapping="Wrap" TextAlignment="Justify" HorizontalAlignment="Left" | |
Margin="0,0,0,2" Foreground="#FFAAAA" | |
Text="Ungracefully stopping Adobe-related processes could impact your system stability and/or cause you to lose work, corrupt data, etc. Adobe system services will continue to run."/> | |
<TextBlock Text="USE AT YOUR OWN RISK." FontWeight="Bold" Foreground="#FF5555" Margin="0,0,0,8" HorizontalAlignment="Left"/> | |
<TextBlock Text="Processes to attempt killing:" Margin="0,0,0,4" FontWeight="Bold" HorizontalAlignment="Left" Foreground="#CCCCCC"/> | |
<ListBox Name="ProcList" Height="120" Width="340" Margin="0,0,0,12" Background="#333333" Foreground="#DDDDDD"/> | |
<TextBlock Name="WarningText2" TextWrapping="Wrap" TextAlignment="Justify" HorizontalAlignment="Left" FontStyle="Italic" FontSize="10" | |
Margin="0,0,0,8" Foreground="#AAAAAA" | |
Text="Note: Some processes may not die properly while Adobe Windows services are set to Enabled. This application does not change service states in order for your Adobe applications to open successfully in the future. These processes are shown in italic text. You may still attempt to kill them if you wish."/> | |
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,0,0,8" Background="#222222"> | |
<Button Name="RefreshButton" Content="Refresh List" Margin="0,0,8,0" Background="#444444" Foreground="#DDDDDD"/> | |
<Button Name="SelectAllButton" Content="Select All" Margin="0,0,8,0" Background="#444444" Foreground="#DDDDDD"/> | |
<Button Name="DeselectAllButton" Content="Deselect All" Margin="0,0,8,0" Background="#444444" Foreground="#DDDDDD"/> | |
<Button Name="KillButton" Content="Kill Selected" Margin="0" Background="#FF5555" Foreground="#222222" FontWeight="Bold"/> | |
</StackPanel> | |
</StackPanel> | |
</Window> | |
"@ | |
$reader = New-Object System.Xml.XmlNodeReader $xaml | |
$window = [Windows.Markup.XamlReader]::Load($reader) | |
$killButton = $window.FindName("KillButton") | |
$refreshButton = $window.FindName("RefreshButton") | |
$procList = $window.FindName("ProcList") | |
$selectAllButton = $window.FindName("SelectAllButton") | |
$deselectAllButton = $window.FindName("DeselectAllButton") | |
function Get-AdobeProcesses { | |
$found = @() | |
$allProcs = Get-Process | |
foreach ($proc in $allProcs) { | |
if ($processPatterns -contains $proc.Name.ToLower()) { | |
$found += $proc | |
} | |
} | |
$found | Sort-Object Name -Unique | |
} | |
function Refresh-ProcList { | |
$procList.Items.Clear() | |
$global:adobeProcs = Get-AdobeProcesses | |
$currentPid = $PID | |
$currentProc = Get-Process -Id $currentPid | |
$parentPid = $currentProc.Parent.Id | |
$excludedNames = @('powershell', 'pwsh', 'conhost', 'wscript', 'cscript') | |
$italicNames = @( | |
"adobe crash processor", | |
"adobecollabsync", | |
"adobeipcbroker", | |
"ccxprocess", | |
"coresync", | |
"creative cloud helper" | |
) | |
$normalProcs = @() | |
$italicProcs = @() | |
foreach ($proc in $global:adobeProcs) { | |
if ($proc.Id -eq $currentPid) { continue } | |
if ($excludedNames -contains $proc.Name.ToLower()) { continue } | |
try { | |
$procParentPid = (Get-Process -Id $proc.Id -ErrorAction SilentlyContinue).Parent.Id | |
if ($procParentPid -eq $parentPid) { continue } | |
} catch {} | |
if ($italicNames -contains $proc.Name.ToLower()) { | |
$italicProcs += $proc | |
} else { | |
$normalProcs += $proc | |
} | |
} | |
foreach ($proc in $normalProcs) { | |
$item = New-Object System.Windows.Controls.ListBoxItem | |
$checkbox = New-Object System.Windows.Controls.CheckBox | |
$checkbox.Content = "$($proc.Name) (PID: $($proc.Id))" | |
$checkbox.Tag = $proc.Id | |
$checkbox.IsChecked = $false | |
$checkbox.Background = [System.Windows.Media.Brushes]::Gray | |
$checkbox.Foreground = [System.Windows.Media.Brushes]::White | |
$item.Content = $checkbox | |
$procList.Items.Add($item) | |
} | |
foreach ($proc in $italicProcs) { | |
$item = New-Object System.Windows.Controls.ListBoxItem | |
$checkbox = New-Object System.Windows.Controls.CheckBox | |
$checkbox.Content = "$($proc.Name) (PID: $($proc.Id))" | |
$checkbox.Tag = $proc.Id | |
$checkbox.IsChecked = $false | |
$checkbox.Background = [System.Windows.Media.Brushes]::Gray | |
$checkbox.Foreground = [System.Windows.Media.Brushes]::DarkGray | |
$item.Content = $checkbox | |
$procList.Items.Add($item) | |
} | |
} | |
Refresh-ProcList | |
$killButton.Add_Click({ | |
$killButton.Content = "Killing Selected" | |
foreach ($item in $procList.Items) { | |
$checkbox = $item.Content | |
if ($checkbox.IsChecked) { | |
$procId = $checkbox.Tag | |
$procName = $checkbox.Content | |
if ($procId -eq $PID) { continue } | |
try { | |
$procParentPid = (Get-Process -Id $procId -ErrorAction SilentlyContinue).Parent.Id | |
if ($procParentPid -eq $parentPid) { continue } | |
} catch {} | |
if (Get-Process -Id $procId -ErrorAction SilentlyContinue) { | |
try { | |
Stop-Process -Id $procId -Force -ErrorAction SilentlyContinue | |
} catch {} | |
if (Get-Process -Id $procId -ErrorAction SilentlyContinue) { | |
try { | |
Start-Process -FilePath "taskkill.exe" -ArgumentList "/PID $procId /F /T" -WindowStyle Hidden | |
} catch {} | |
} | |
} | |
} | |
} | |
Start-Sleep -Seconds 1 | |
Refresh-ProcList | |
$killButton.Content = "Kill Selected" | |
}) | |
$refreshButton.Add_Click({ | |
Refresh-ProcList | |
}) | |
$selectAllButton.Add_Click({ | |
foreach ($item in $procList.Items) { | |
$checkbox = $item.Content | |
$checkbox.IsChecked = $true | |
} | |
}) | |
$deselectAllButton.Add_Click({ | |
foreach ($item in $procList.Items) { | |
$checkbox = $item.Content | |
$checkbox.IsChecked = $false | |
} | |
}) | |
$timer = New-Object System.Windows.Threading.DispatcherTimer | |
$timer.Interval = [TimeSpan]::FromSeconds(10) | |
$timer.Add_Tick({ Refresh-ProcList }) | |
$timer.Start() | |
$window.ShowDialog() | Out-Null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment