Compare commits

...

7 Commits

Author SHA1 Message Date
ChrisTitusTech
37bf8bfa4e Compile Winutil 2024-04-16 20:38:18 +00:00
Consejos Tecnológicos de Edu
535b0e409d
Disable SCOOBE in WPFTweaksTele (#1832) 2024-04-16 15:37:57 -05:00
ChrisTitusTech
9b30befe96 Compile Winutil 2024-04-16 20:27:18 +00:00
ModernTTY
a920862a9d
Add tweak (#1837) 2024-04-16 15:26:59 -05:00
Mr.k
50090efcef
Update Github Actions Auto Close Issues (#1801)
* Update Github Actions Auto Close Issues

* Add try-catch & Error Logging in Github Actions Auto Close Issues

* Add a Break Statement To Skip Checking The Remaining Labels of an Issue in Github Actions Auto Close Issues
2024-04-16 15:25:32 -05:00
ChrisTitusTech
72f6ca17e5 Compile Winutil 2024-04-16 20:14:18 +00:00
Straight
27cc813b8f
editing edgeremoval.ps1 (#1834)
* editing edgeremoval.ps1

* Compile Winutil

---------

Co-authored-by: DaEpicR <DaEpicR@users.noreply.github.com>
2024-04-16 15:13:56 -05:00
5 changed files with 190 additions and 334 deletions

View File

@ -25,6 +25,8 @@ jobs:
const inactivityPeriod = new Date();
inactivityPeriod.setDate(inactivityPeriod.getDate() - 14);
const labelKeepIssue = 'Keep Issue Open';
try {
// Get all open issues with pagination
for await (const response of octokit.paginate.iterator(octokit.rest.issues.listForRepo, {
@ -36,6 +38,33 @@ jobs:
// Close issues inactive for more than the inactivity period
for (const issue of issues) {
const closeIssue = true;
// Get all Labels of issue, and compared each label with the labelKeepIssue const variable
try {
const respondIssueLabels = await octokit.request("GET /repos/{owner}/{repo}/issues/{issue_number}/labels", {
owner: owner,
repo: repo,
issue_number: issue.number
});
const labels = respondIssueLabels.data;
for (let i = 0; i < labels.length; i++) {
const label = labels[i]
if (label.name === labelKeepIssue) {
console.log(`Issue #${issue.number} will not be closed`);
closeIssue = false;
break; // Break from the loop, no need to check the remaining Labels.
}
}
} catch (error) {
console.error(`Error while Fetching Labels for Issue #${issue.number}, Error: ${error}`);
}
if (!closeIssue) {
continue; // Skip the next bit of code
}
const lastCommentDate = issue.updated_at;
if (new Date(lastCommentDate) < inactivityPeriod) {
try {

View File

@ -1889,6 +1889,13 @@
"Name": "Scheduling Category",
"Value": "High",
"Type": "String"
},
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\UserProfileEngagement",
"OriginalValue": "1",
"Name": "ScoobeSystemSettingEnabled",
"Value": "0",
"Type": "DWord"
}
],
"InvokeScript": [
@ -2234,6 +2241,18 @@
"
]
},
"WPFTweaksEndTaskOnTaskbar": {
"Content": "Enable End Task With Right Click",
"Description": "Enables option to end task when right clicking a program in the taskbar",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a002_",
"InvokeScript": [
"
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"1\"
"
]
},
"WPFTweaksOO": {
"Content": "Run OO Shutup",
"Description": "Runs OO Shutup from https://www.oo-software.com/en/shutup10",

View File

@ -15,11 +15,6 @@ if ($also_remove_webview -eq 1) {
}
# Administrative Privileges Check
# Get the 'SetPrivilege' method from System.Diagnostics.Process type
$setPrivilegeMethod = [System.Diagnostics.Process].GetMethod('SetPrivilege', [System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Static)
# List of privileges to set
$privileges = @(
'SeSecurityPrivilege',
'SeTakeOwnershipPrivilege',
@ -27,44 +22,34 @@ $privileges = @(
'SeRestorePrivilege'
)
# Invoke the method for each privilege
foreach ($privilege in $privileges) {
$setPrivilegeMethod.Invoke($null, @($privilege, 2))
[System.Diagnostics.Process]::SetPrivilege($privilege, 2)
}
# Edge Removal Procedures
# Define processes to shut down
$processesToShutdown = @(
'explorer', 'Widgets', 'widgetservice', 'msedgewebview2', 'MicrosoftEdge*', 'chredge',
'msedge', 'edge', 'msteams', 'msfamily', 'WebViewHost', 'Clipchamp'
)
# Kill explorer process
Stop-Process -Name "explorer" -Force -ErrorAction SilentlyContinue
# Kill the processes from the list
$processesToShutdown | ForEach-Object {
Stop-Process -Name $_ -Force -ErrorAction SilentlyContinue
}
# Set path for Edge executable
$MS = ($env:ProgramFiles, ${env:ProgramFiles(x86)})[[Environment]::Is64BitOperatingSystem] + '\Microsoft\Edge\Application\msedge.exe'
# Clean up certain registry entries
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\msedge.exe" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ie_to_edge_stub.exe" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\microsoft-edge' -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\MSEdgeHTM' -Recurse -ErrorAction SilentlyContinue
# Create new registry entries
New-Item -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Name '(Default)' -Value "`"$MS`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Name '(Default)' -Value "`"$MS`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
# Remove certain registry properties
$registryPaths = @('HKLM:\SOFTWARE\Policies', 'HKLM:\SOFTWARE', 'HKLM:\SOFTWARE\WOW6432Node')
$edgeProperties = @('InstallDefault', 'Install{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}', 'Install{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}')
foreach ($path in $registryPaths) {
@ -84,7 +69,6 @@ foreach ($base in $registryBases) {
}
}
# Clear specific registry keys
$registryPaths = @('HKCU:', 'HKLM:')
$nodes = @('', '\Wow6432Node')
foreach ($regPath in $registryPaths) {
@ -97,7 +81,6 @@ foreach ($regPath in $registryPaths) {
}
}
# Locate setup.exe and ie_to_edge_stub.exe
$foldersToSearch = @('LocalApplicationData', 'ProgramFilesX86', 'ProgramFiles') | ForEach-Object {
[Environment]::GetFolderPath($_)
}
@ -112,7 +95,6 @@ foreach ($folder in $foldersToSearch) {
Where-Object { $_.FullName -notlike '*EdgeWebView*' }
}
# Create directory and copy ie_to_edge_stub.exe to it
$destinationDir = "$env:SystemDrive\Scripts"
New-Item -Path $destinationDir -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
@ -125,342 +107,147 @@ foreach ($bhoFile in $bhoFiles) {
}
## Work on Appx Removals
# Retrieve AppX provisioned packages and all AppX packages
$provisioned = Get-AppxProvisionedPackage -Online
$appxpackage = Get-AppxPackage -AllUsers
# Initialize empty array for EndOfLife packages
$eol = @()
# Define user SIDs and retrieve them from the registry
$store = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore'
$users = @('S-1-5-18')
if (Test-Path $store) {
$users += (Get-ChildItem $store -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -like '*S-1-5-21*' }).PSChildName
}
# Process AppX packages for removal
foreach ($choice in $remove_appx) {
if ([string]::IsNullOrWhiteSpace($choice)) { continue }
# Process provisioned packages
$provisioned | Where-Object { $_.PackageName -like "*$choice*" } | ForEach-Object {
if ($skip -Contains $_.PackageName) { return }
$PackageName = $_.PackageName
$PackageFamilyName = ($appxpackage | Where-Object { $_.Name -eq $_.DisplayName }).PackageFamilyName
# Add registry entries
New-Item -Path "$store\Deprovisioned\$PackageFamilyName" -Force -ErrorAction SilentlyContinue | Out-Null
$users | ForEach-Object {
New-Item -Path "$store\EndOfLife\$_\$PackageName" -Force -ErrorAction SilentlyContinue | Out-Null
}
$eol += $PackageName
# Modify non-removable app policy and remove package
dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 | Out-Null
Remove-AppxProvisionedPackage -PackageName $PackageName -Online -AllUsers | Out-Null
}
# Process all AppX packages
$appxpackage | Where-Object { $_.PackageFullName -like "*$choice*" } | ForEach-Object {
if ($skip -Contains $_.PackageFullName) { return }
$PackageFullName = $_.PackageFullName
# Add registry entries
New-Item -Path "$store\Deprovisioned\$_.PackageFamilyName" -Force -ErrorAction SilentlyContinue | Out-Null
$users | ForEach-Object {
New-Item -Path "$store\EndOfLife\$_\$PackageFullName" -Force -ErrorAction SilentlyContinue | Out-Null
}
$eol += $PackageFullName
# Modify non-removable app policy and remove package
dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 | Out-Null
Remove-AppxPackage -Package $PackageFullName -AllUsers | Out-Null
$store = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Store'
$storeP = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Store\InstalledApplications'
foreach ($app in $appxpackage) {
$name = $app.Name
if ($app.Name -eq "Microsoft.Edge") {
$eol += $name
} elseif ($app.Name -eq "Microsoft.EdgeBeta" -or $app.Name -eq "Microsoft.EdgeDev" -or $app.Name -eq "Microsoft.EdgeCanary" -or $app.Name -eq "Microsoft.MicrosoftEdge") {
$eol += $name
}
}
## Run Edge setup uninstaller
foreach ($setup in $edges) {
if (Test-Path $setup) {
$target = if ($setup -like '*EdgeWebView*') { "--msedgewebview" } else { "--msedge" }
$removalArgs = "--uninstall $target --system-level --verbose-logging --force-uninstall"
Write-Host "$setup $removalArgs"
$eolApps = $provisioned | Where-Object { $eol -contains $_.DisplayName }
foreach ($edge in $eolApps) {
$edgeName = $edge.DisplayName
if (-not ($skip -contains $edgeName)) {
try {
Start-Process -FilePath $setup -ArgumentList $removalArgs -Wait
Remove-AppxProvisionedPackage -Online -PackageName $edgeName -ErrorAction SilentlyContinue
} catch { }
}
}
foreach ($edge in $appxpackage) {
$edgeName = $edge.Name
if ($eol -contains $edgeName) {
if (-not ($skip -contains $edgeName)) {
try {
Remove-AppxPackage -Package $edgeName -AllUsers -ErrorAction SilentlyContinue
} catch { }
}
}
}
## Redirect shortcuts
$shortcut_path = "$env:Public\Desktop"
$shortcut_file = 'Microsoft Edge.lnk'
$full_path = Join-Path -Path $shortcut_path -ChildPath $shortcut_file
if (Test-Path $full_path) {
Remove-Item -Path $full_path -Force -ErrorAction SilentlyContinue
}
$shortcut_path = "$env:ProgramData\Microsoft\Windows\Start Menu\Programs"
$shortcut_file = 'Microsoft Edge.lnk'
$full_path = Join-Path -Path $shortcut_path -ChildPath $shortcut_file
if (Test-Path $full_path) {
Remove-Item -Path $full_path -Force -ErrorAction SilentlyContinue
}
$edgePolicy = 'HKLM:\SOFTWARE\Policies\Microsoft\Edge'
if (-not (Test-Path $edgePolicy)) {
New-Item -Path $edgePolicy -Force | Out-Null
}
$edgePrefs = @{
'Dword' = @{
'BrowserReplacementEnabled' = 1
'HideFirstRunExperience' = 1
'HideImportEdgeFavoritesPrompt' = 1
'HideSyncSetupExperience' = 1
'FavoritesBarVisibility' = 1
}
'String' = @{
'AutoplayAllowed' = 'AllowOnce'
}
}
foreach ($entryType in $edgePrefs.Keys) {
foreach ($prefName in $edgePrefs[$entryType].Keys) {
Set-ItemProperty -Path $edgePolicy -Name $prefName -Value $edgePrefs[$entryType][$prefName] -Type $entryType -Force
}
}
# Output Results
Write-Host "Edge Removal Complete" -ForegroundColor Green
# Define constants and initial configuration
$ScriptVersion = "2023.05.10"
$EdgeProcessesToShutdown = @('explorer', 'Widgets', 'widgetservice', 'msedgewebview2', 'MicrosoftEdge*', 'chredge', 'msedge', 'edge', 'msteams', 'msfamily', 'WebViewHost', 'Clipchamp')
$EdgeRemovalOptions = @{
RemoveWin32 = @("Microsoft Edge", "Microsoft Edge Update")
RemoveAppx = @("MicrosoftEdge")
Skip = @() # Optional: @("DevTools")
AlsoRemoveWebView = $false
}
# Define main function to remove Microsoft Edge components
function Remove-MicrosoftEdge {
[CmdletBinding()]
param()
# Function to shutdown processes related to Microsoft Edge
function Stop-EdgeProcesses {
$EdgeProcessesToShutdown | ForEach-Object {
Stop-Process -Name $_ -Force -ErrorAction SilentlyContinue
}
}
# Function to remove registry entries related to Microsoft Edge
function Remove-EdgeRegistryEntries {
# Clean up certain registry entries
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\msedge.exe" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ie_to_edge_stub.exe" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\microsoft-edge' -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\MSEdgeHTM' -Recurse -ErrorAction SilentlyContinue
# Create new registry entries
$EdgeExecutablePath = ($env:ProgramFiles, ${env:ProgramFiles(x86)})[[Environment]::Is64BitOperatingSystem] + '\Microsoft\Edge\Application\msedge.exe'
New-Item -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Name '(Default)' -Value "`"$EdgeExecutablePath`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Name '(Default)' -Value "`"$EdgeExecutablePath`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
}
# Function to remove Microsoft Edge AppX packages
function Remove-EdgeAppxPackages {
$EdgeRemovalOptions.RemoveAppx | ForEach-Object {
# Remove provisioned packages
Get-AppxProvisionedPackage -Online | Where-Object { $_.PackageName -like "*$_*" -and $EdgeRemovalOptions.Skip -notcontains $_.PackageName } | Remove-AppxProvisionedPackage -Online -AllUsers -ErrorAction SilentlyContinue
# Remove installed packages
Get-AppxPackage -AllUsers | Where-Object { $_.PackageFullName -like "*$_*" -and $EdgeRemovalOptions.Skip -notcontains $_.PackageFullName } | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
}
}
# Function to remove Microsoft Edge processes, registry entries, and AppX packages
try {
Stop-EdgeProcesses
Remove-EdgeRegistryEntries
Remove-EdgeAppxPackages
Write-Output "Microsoft Edge components have been successfully removed."
} catch {
# You may want to add logging or other error handling here.
}
while ((Get-Process -Name 'setup', 'MicrosoftEdge*' -ErrorAction SilentlyContinue).Path -like '*\Microsoft\Edge*') {
Start-Sleep -Seconds 3
}
}
}
## Cleanup
# Define necessary paths and variables
$edgePaths = $env:ProgramFiles, ${env:ProgramFiles(x86)}
$appDataPath = [Environment]::GetFolderPath('ApplicationData')
# Uninstall Microsoft Edge Update
foreach ($path in $edgePaths) {
$edgeUpdateExe = "$path\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"
if (Test-Path $edgeUpdateExe) {
Write-Host $edgeUpdateExe /uninstall
Start-Process -FilePath $edgeUpdateExe -ArgumentList '/uninstall' -Wait
while ((Get-Process -Name 'setup','MicrosoftEdge*' -ErrorAction SilentlyContinue).Path -like '*\Microsoft\Edge*') {
Start-Sleep -Seconds 3
}
if ($also_remove_webview -eq 1) {
foreach ($regPath in 'HKCU:', 'HKLM:') {
foreach ($node in '', '\Wow6432Node') {
Remove-Item -Path "$regPath\SOFTWARE$node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" -Recurse -Force -ErrorAction SilentlyContinue
}
}
Remove-Item -Path "$path\Microsoft\EdgeUpdate" -Recurse -Force -ErrorAction SilentlyContinue
Unregister-ScheduledTask -TaskName 'MicrosoftEdgeUpdate*' -Confirm:$false -ErrorAction SilentlyContinue
}
}
}
# Remove Edge shortcuts
Remove-Item -Path "$appDataPath\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Tombstones\Microsoft Edge.lnk" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$appDataPath\Microsoft\Internet Explorer\Quick Launch\Microsoft Edge.lnk" -Force -ErrorAction SilentlyContinue
# Revert settings related to Microsoft Edge
foreach ($sid in $users) {
foreach ($packageName in $eol) {
Remove-Item -Path "$store\EndOfLife\$sid\$packageName" -Force -ErrorAction SilentlyContinue
Write-Error "Failed to remove Microsoft Edge components: $_"
}
}
# Set policies to prevent unsolicited reinstalls of Microsoft Edge
$registryPaths = @('HKLM:\SOFTWARE\Policies', 'HKLM:\SOFTWARE', 'HKLM:\SOFTWARE\WOW6432Node')
$edgeUpdatePolicies = @{
'InstallDefault' = 0;
'Install{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}' = 0;
'Install{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}' = 1;
'DoNotUpdateToEdgeWithChromium' = 1;
}
foreach ($path in $registryPaths) {
New-Item -Path "$path\Microsoft\EdgeUpdate" -Force -ErrorAction SilentlyContinue | Out-Null
foreach ($policy in $edgeUpdatePolicies.GetEnumerator()) {
Set-ItemProperty -Path "$path\Microsoft\EdgeUpdate" -Name $policy.Key -Value $policy.Value -Type Dword -Force
}
}
$edgeUpdateActions = @('on-os-upgrade', 'on-logon', 'on-logon-autolaunch', 'on-logon-startup-boost')
$edgeUpdateClients = @(
'Microsoft\EdgeUpdate\Clients\{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}',
'Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}'
)
foreach ($client in $edgeUpdateClients) {
foreach ($action in $edgeUpdateActions) {
foreach ($regBase in 'HKLM:\SOFTWARE', 'HKLM:\SOFTWARE\Wow6432Node') {
$regPath = "$regBase\$client\Commands\$action"
New-Item -Path $regPath -Force -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path $regPath -Name 'CommandLine' -Value 'systray.exe' -Force
}
}
}
## Redirect Edge Shortcuts
# Define Microsoft Edge Paths
$MSEP = ($env:ProgramFiles, ${env:ProgramFiles(x86)})[[Environment]::Is64BitOperatingSystem] + '\Microsoft\Edge\Application'
$IFEO = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options'
$MIN = ('--headless', '--width 1 --height 1')[([environment]::OSVersion.Version.Build) -gt 25179]
$CMD = "$env:systemroot\system32\conhost.exe $MIN"
$DIR = "$env:SystemDrive\Scripts"
# Setup Microsoft Edge Registry Entries
New-Item -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge" -Name '(Default)' -Value 'URL:microsoft-edge' -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge" -Name 'URL Protocol' -Value '' -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge" -Name 'NoOpenWith' -Value '' -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Name '(Default)' -Value "`"$DIR\ie_to_edge_stub.exe`" %1" -Force
# Setup MSEdgeHTM Registry Entries
New-Item -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM" -Name 'NoOpenWith' -Value '' -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Name '(Default)' -Value "`"$DIR\ie_to_edge_stub.exe`" %1" -Force
# Setup Image File Execution Options for Edge and Edge WebView
$exeSettings = @(
@{ ExeName = 'ie_to_edge_stub.exe'; Debugger = "$CMD $DIR\OpenWebSearch.cmd"; FilterPath = "$DIR\ie_to_edge_stub.exe" },
@{ ExeName = 'msedge.exe'; Debugger = "$CMD $DIR\OpenWebSearch.cmd"; FilterPath = "$MSEP\msedge.exe" }
)
foreach ($setting in $exeSettings) {
New-Item -Path "$IFEO\$($setting.ExeName)\0" -Force | Out-Null
Set-ItemProperty -Path "$IFEO\$($setting.ExeName)" -Name 'UseFilter' -Value 1 -Type Dword -Force
Set-ItemProperty -Path "$IFEO\$($setting.ExeName)\0" -Name 'FilterFullPath' -Value $setting.FilterPath -Force
Set-ItemProperty -Path "$IFEO\$($setting.ExeName)\0" -Name 'Debugger' -Value $setting.Debugger -Force
}
# Write OpenWebSearch Batch Script
$OpenWebSearch = @'
@echo off
@title OpenWebSearch Redux
:: Minimize prompt
for /f %%E in ('"prompt $E$S & for %%e in (1) do rem"') do echo;%%E[2t >nul 2>&1
:: Get default browser from registry
call :get_registry_value "HKCU\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice" ProgID DefaultBrowser
if not defined DefaultBrowser (
echo Error: Failed to get default browser from registry.
pause
exit /b
)
if /i "%DefaultBrowser%" equ "MSEdgeHTM" (
echo Error: Default browser is set to Edge! Change it or remove OpenWebSearch script.
pause
exit /b
)
:: Get browser command line
call :get_registry_value "HKCR\%DefaultBrowser%\shell\open\command" "" BrowserCommand
if not defined BrowserCommand (
echo Error: Failed to get browser command from registry.
pause
exit /b
)
set Browser=& for %%i in (%BrowserCommand%) do if not defined Browser set "Browser=%%~i"
:: Set fallback for Edge
call :get_registry_value "HKCR\MSEdgeMHT\shell\open\command" "" FallBack
set EdgeCommand=& for %%i in (%FallBack%) do if not defined EdgeCommand set "EdgeCommand=%%~i"
:: Parse command line arguments and check for redirect or noop conditions
set "URI=" & set "URL=" & set "NOOP=" & set "PassThrough=%EdgeCommand:msedge=edge%"
set "CommandLineArgs=%CMDCMDLINE:"=``% "
call :parse_arguments
if defined NOOP (
if not exist "%PassThrough%" (
echo Error: PassThrough path doesn't exist.
pause
exit /b
)
start "" "%PassThrough%" %ParsedArgs%
exit /b
)
:: Decode URL
call :decode_url
if not defined URL (
echo Error: Failed to decode URL.
pause
exit /b
)
:: Open URL in default browser
start "" "%Browser%" "%URL%"
exit
:: Functions
:get_registry_value
setlocal
set regQuery=reg query "%~1" /v %2 /z /se "," /f /e
if "%~2" equ "" set regQuery=reg query "%~1" /ve /z /se "," /f /e
for /f "skip=2 tokens=* delims=" %%V in ('%regQuery% 2^>nul') do set "result=%%V"
if defined result (set "result=%result:*) =%") else (set "%~3=")
endlocal & set "%~3=%result%"
exit /b
:decode_url
:: Brute URL percent decoding
setlocal enabledelayedexpansion
set "decoded=%URL:!=}%"
call :brute_decode
endlocal & set "URL=%decoded%"
exit /b
:parse_arguments
:: Remove specific substrings from arguments
set "CommandLineArgs=%CommandLineArgs:*ie_to_edge_stub.exe`` =%"
set "CommandLineArgs=%CommandLineArgs:*ie_to_edge_stub.exe =%"
set "CommandLineArgs=%CommandLineArgs:*msedge.exe`` =%"
set "CommandLineArgs=%CommandLineArgs:*msedge.exe =%"
:: Remove any trailing spaces
if "%CommandLineArgs:~-1%"==" " set "CommandLineArgs=%CommandLineArgs:~0,-1%"
:: Check if arguments are a redirect or URL
set "RedirectArg=%CommandLineArgs:microsoft-edge=%"
set "UrlArg=%CommandLineArgs:http=%"
set "ParsedArgs=%CommandLineArgs:``="%"
:: Set NOOP flag if no changes to arguments
if "%CommandLineArgs%" equ "%RedirectArg%" (set NOOP=1) else if "%CommandLineArgs%" equ "%UrlArg%" (set NOOP=1)
:: Extract URL if present
if not defined NOOP (
set "URL=%CommandLineArgs:*microsoft-edge=%"
set "URL=http%URL:*http=%"
if "%URL:~-2%"=="``" set "URL=%URL:~0,-2%"
)
exit /b
:brute_decode
:: Brute force URL percent decoding
set "decoded=%decoded:%%20= %"
set "decoded=%decoded:%%21=!!"
set "decoded=%decoded:%%22="%""
set "decoded=%decoded:%%23=#%"
set "decoded=%decoded:%%24=$%"
set "decoded=%decoded:%%25=%%%"
set "decoded=%decoded:%%26=&%"
set "decoded=%decoded:%%27='%"
set "decoded=%decoded:%%28=(%"
set "decoded=%decoded:%%29=)%"
set "decoded=%decoded:%%2A=*%"
set "decoded=%decoded:%%2B=+%"
set "decoded=%decoded:%%2C=,%"
set "decoded=%decoded:%%2D=-%"
set "decoded=%decoded:%%2E=.%"
set "decoded=%decoded:%%2F=/%"
:: ... Continue for other encodings ...
:: Correct any double percentage signs
set "decoded=%decoded:%%%%=%"
exit /b
'@
[io.file]::WriteAllText("$DIR\OpenWebSearch.cmd", $OpenWebSearch)
# Final Steps
# Retrieve the Edge_Removal property from the specified registry paths
$userRegPaths = Get-ChildItem -Path 'Registry::HKEY_Users\S-1-5-21*\Volatile*' -ErrorAction SilentlyContinue
$edgeRemovalPath = $userRegPaths | Get-ItemProperty -Name 'Edge_Removal' -ErrorAction SilentlyContinue
# If the Edge_Removal property exists, remove it
if ($edgeRemovalPath) {
Remove-ItemProperty -Path $edgeRemovalPath.PSPath -Name 'Edge_Removal' -Force -ErrorAction SilentlyContinue
}
# Ensure the explorer process is running
if (-not (Get-Process -Name 'explorer' -ErrorAction SilentlyContinue)) {
Start-Process 'explorer'
}
# Execute the main function
Remove-MicrosoftEdge

View File

@ -10,7 +10,7 @@
Author : Chris Titus @christitustech
Runspace Author: @DeveloperDurp
GitHub : https://github.com/ChrisTitusTech
Version : 24.03.31
Version : 24.04.16
#>
param (
[switch]$Debug,
@ -47,7 +47,7 @@ Add-Type -AssemblyName System.Windows.Forms
# Variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $PSScriptRoot
$sync.version = "24.03.31"
$sync.version = "24.04.16"
$sync.configs = @{}
$sync.ProcessRunning = $false
@ -9518,6 +9518,13 @@ $sync.configs.tweaks = '{
"Name": "Scheduling Category",
"Value": "High",
"Type": "String"
},
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\UserProfileEngagement",
"OriginalValue": "1",
"Name": "ScoobeSystemSettingEnabled",
"Value": "0",
"Type": "DWord"
}
],
"InvokeScript": [
@ -9863,6 +9870,18 @@ $sync.configs.tweaks = '{
"
]
},
"WPFTweaksEndTaskOnTaskbar": {
"Content": "Enable End Task With Right Click",
"Description": "Enables option to end task when right clicking a program in the taskbar",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a002_",
"InvokeScript": [
"
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"1\"
"
]
},
"WPFTweaksOO": {
"Content": "Run OO Shutup",
"Description": "Runs OO Shutup from https://www.oo-software.com/en/shutup10",
@ -11935,6 +11954,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label Content="Essential Tweaks" FontSize="16"/>
<CheckBox Name="WPFTweaksRestorePoint" Content="Create Restore Point" IsChecked="True" Margin="5,0" ToolTip="Creates a restore point at runtime in case a revert is needed from WinUtil modifications"/>
<CheckBox Name="WPFTweaksEndTaskOnTaskbar" Content="Enable End Task With Right Click" Margin="5,0" ToolTip="Enables option to end task when right clicking a program in the taskbar"/>
<CheckBox Name="WPFTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
<CheckBox Name="WPFTweaksTele" Content="Disable Telemetry" Margin="5,0" ToolTip="Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser."/>
<CheckBox Name="WPFTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location."/>

View File

@ -6,6 +6,7 @@
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label Content="Essential Tweaks" FontSize="16"/>
<CheckBox Name="WPFTweaksRestorePoint" Content="Create Restore Point" IsChecked="True" Margin="5,0" ToolTip="Creates a restore point at runtime in case a revert is needed from WinUtil modifications"/>
<CheckBox Name="WPFTweaksEndTaskOnTaskbar" Content="Enable End Task With Right Click" Margin="5,0" ToolTip="Enables option to end task when right clicking a program in the taskbar"/>
<CheckBox Name="WPFTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
<CheckBox Name="WPFTweaksTele" Content="Disable Telemetry" Margin="5,0" ToolTip="Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser."/>
<CheckBox Name="WPFTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location."/>