-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcheck_installed_duplicate_program.ps1
More file actions
38 lines (33 loc) · 1.45 KB
/
Copy pathcheck_installed_duplicate_program.ps1
File metadata and controls
38 lines (33 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Check if running with Administrator privileges
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Error "This script requires Administrator privileges to ensure the uninstall is silent. Please run it as an administrator."
exit 1
}
$displayName = "Foxit PDF Reader"
$processName = "FoxitPDFReader"
function Get-UninstallEntries {
$regPath1 = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
$regPath2 = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
$regPath3 = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
@(Get-ChildItem $regPath1, $regPath2, $regPath3 -ErrorAction SilentlyContinue |
ForEach-Object { try { Get-ItemProperty -Path $_.PsPath -ErrorAction Stop } catch {} } |
Where-Object { $_.DisplayName -match $displayName }
)
}
# Check if the program is running
if (Get-Process -Name $processName -ErrorAction SilentlyContinue) {
Write-Warning "$displayName is currently running."
}
else {
Write-Host "$displayName is not currently running."
}
# Check if there is a duplicate installation
$entryCount = (Get-UninstallEntries).Count
if ($entryCount -gt 1) {
Write-Warning "$entryCount duplicate installations found for $displayName."
exit 1
}
else {
Write-Host "No duplicate installation found for $displayName. Exiting..."
exit 0
}