Merge branch 'builtbybel:main' into main

This commit is contained in:
Peter
2025-05-17 23:29:05 +10:00
committed by GitHub
14 changed files with 740 additions and 52 deletions
+10
View File
@@ -0,0 +1,10 @@
/docs/**/*.html linguist-documentation=true
/docs/**/*.htm linguist-documentation=true
/docs/**/*.js linguist-documentation=true
*.cs linguist-detectable=true
*.csx linguist-detectable=true
*.html linguist-detectable=true
*.js linguist-detectable=true
*.jsx linguist-detectable=true
*.ps1 linguist-detectable=true
*.psm1 linguist-detectable=true
+16 -13
View File
@@ -16,24 +16,27 @@ While cleaning up my GitHub (30+ repos down to 20 now), I also cleaned up thousa
![Fixing the crap](https://github.com/user-attachments/assets/cb568d53-113e-4a14-8c88-30e822b45bd3)
## Features
## 🚀 How to Use Crapfixer
- **Debloat Windows:** Say goodbye to unwanted pre-installed apps.
- **Enhance Privacy:** Take control of data collection settings.
- **Streamline Performance:** Tweak your system for a smoother experience.
- **User-Friendly & Safe:** Classic UI with reversible changes for peace of mind.
1. **Launch the Tool**
All optimization options are enabled by default – no need to tweak anything.
## How to Use Crapfixer
2. **Analyze Your System**
Click **"Analyze"** to scan your system based on the selected settings.
- **Red** items = Recommended fixes
- **Gray** items = Already optimized
Using Crapfixer is straightforward:
3. **Apply Fixes**
Smash the **"Run CFixer!"** button to apply the recommended tweaks.
1. **Launch the Tool:** All optimization options are enabled by default to save you time.
2. **Analyze Your System:** Simply click the "Analyze" button. Crapfixer will check your system against the selected options.
- Items marked in **red** are recommended fixes.
- Items in **gray** are already configured correctly.
3. **Apply Fixes:** Then just smash the "Run CFixer!" button and you're good to go.
4. **🔍 Optional: Review the Log**
Still unsure about the results?
→ Upload your log to the [Online Log Analyzer](https://builtbybel.github.io/Crapfixer/log-analyzer/index.html)
→ Get a breakdown of the changes
→ Share the link for feedback if needed
_For full functionality, it's recommended to run the app as Administrator, since certain features - like editing registry values under HKEY_LOCAL_MACHINE - require elevated permissions._
> ⚠️ **Tip:** For full functionality, run Crapfixer as **Administrator**.
> Some fixes (like registry edits under `HKEY_LOCAL_MACHINE`) need elevated permissions.
## System Requirements
+52
View File
@@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Crapfixer Log Analyzer</title>
<style>
body { font-family: sans-serif; margin: 2rem; background: #f4f4f4; }
textarea { width: 100%; height: 200px; font-family: monospace; margin-bottom: 1rem; }
.result { background: white; border: 1px solid #ddd; padding: 1rem; }
.issue { color: #c62828; margin-bottom: 0.5rem; }
.key { font-family: monospace; color: #37474f; }
.plugin { color: #1565c0; margin-bottom: 0.3rem; }
</style>
</head>
<body>
<h1>🧠 Crapfixer Log Analyzer</h1>
<p>
To get started, please follow these simple steps:
<ol>
<li>Run the analysis in your Crapfixer app and <strong>export or copy the full log</strong> from the results window.</li>
<li>Come back here and <strong>paste the entire log</strong> into the textbox below.</li>
<li>Click the <strong>🔍 Analyze</strong> button to see a detailed breakdown of issues, registry keys, and plugin files.</li>
</ol>
</p>
<textarea id="logInput" placeholder="Paste your Crapfixer log here..."></textarea>
<button onclick="analyzeLog()">🔍 Analyze</button>
<div class="result" id="output"></div>
<script>
function analyzeLog() {
const log = document.getElementById('logInput').value;
const output = document.getElementById('output');
const lines = log.split('\n');
const issues = lines.filter(line => line.startsWith('❌'));
const regKeys = lines.filter(line => line.includes('HKEY_') || line.includes('➤'));
const plugins = lines.filter(line => line.match(/Plugin ready: .*\.ps1/i));
output.innerHTML = `
<h3>🧪 Found ${issues.length} Issues</h3>
<div>${issues.map(i => `<div class="issue">${i}</div>`).join('')}</div>
<hr>
<h3>🗂 Registry Keys</h3>
<div>${regKeys.map(k => `<div class="key">${k}</div>`).join('')}</div>
<hr>
<h3>📦 Loaded Plugins</h3>
<div>${plugins.map(p => `<div class="plugin">${p}</div>`).join('')}</div>
`;
}
</script>
</body>
</html>
+212
View File
@@ -0,0 +1,212 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Crapfixer Log Analyzer</title>
<style>
/* ---------- Basic Styles ---------- */
body {
font-family: 'Courier New', Courier, monospace;
margin: 0;
background: #f0f0f0;
color: #333;
}
header {
background: #4d4d4d;
color: white;
padding: 1rem;
display: flex;
justify-content: space-between;
align-items: center;
}
header h1 {
margin: 0;
font-size: 1.5rem;
}
/* ---------- Top-right Links ---------- */
.actions a {
color: white;
margin-left: 1rem;
text-decoration: none;
font-size: 0.9rem;
background: #444;
padding: 0.3rem 0.6rem;
border-radius: 4px;
transition: background 0.3s;
}
.actions a:hover {
background: #666;
}
/* ---------- Layout ---------- */
main {
padding: 2rem;
max-width: 800px;
margin: auto;
}
textarea {
width: 100%;
height: 200px;
font-family: monospace;
padding: 1rem;
border: 1px solid #ccc;
background: #fff;
border-radius: 5px;
resize: vertical;
}
button {
margin-top: 1rem;
padding: 0.5rem 1rem;
font-size: 1rem;
border: none;
background: #1565c0;
color: white;
cursor: pointer;
border-radius: 4px;
margin-right: 0.5rem;
}
button:hover {
background: #0d47a1;
}
/* ---------- Results Section ---------- */
.result {
background: white;
border: 1px solid #ddd;
padding: 1rem;
margin-top: 2rem;
border-radius: 5px;
}
.issue { color: #c62828; margin-bottom: 0.5rem; }
.key { color: #37474f; font-family: monospace; }
.plugin { color: #1565c0; margin-bottom: 0.3rem; }
.btn-group {
margin-top: 1rem;
}
</style>
</head>
<body>
<!-- ---------- HEADER SECTION ---------- -->
<header>
<h1>🧠 Crapfixer Log Analyzer</h1>
<div class="actions">
<a href="https://github.com/builtbybel/Crapfixer" target="_blank">GitHub</a>
<a href="https://www.paypal.com/donate/?hosted_button_id=M9DW4VNKH9ECQ" target="_blank">PayPal</a>
<a href="https://ko-fi.com/builtbybel" target="_blank">Ko-fi</a>
</div>
</header>
<!-- ---------- MAIN CONTENT ---------- -->
<main>
<p><strong>How it works:</strong></p>
<ol>
<li>Run the analysis in Crapfixer and <strong>copy the full log</strong>.</li>
<li>Paste it into the box below.</li>
<li>Click <strong>Analyze</strong> to get results.</li>
</ol>
<!-- ---------- LOG INPUT ---------- -->
<textarea id="logInput" placeholder="Drop your Crapfixer log here..."></textarea>
<!-- ---------- BUTTONS ---------- -->
<div class="btn-group">
<button onclick="analyzeLog()">🔍 Analyze</button>
<button onclick="copyResult()">📋 Copy to Clipboard</button>
<button onclick="captureResult()">📸 Take Screenshot</button>
<button onclick="shareResult()">📤 Share</button>
<button onclick="shareOnTwitter()">🐦 Share on X</button>
</div>
<!-- ---------- OUTPUT AREA ---------- -->
<div class="result" id="output"></div>
</main>
<!-- ---------- JAVASCRIPT SECTION ---------- -->
<script>
// Analyze the pasted log and extract issues, registry keys, and plugin info
function analyzeLog() {
const log = document.getElementById('logInput').value;
const output = document.getElementById('output');
const lines = log.split('\n');
const issues = lines.filter(line => line.startsWith('❌'));
const regKeys = lines.filter(line => line.includes('HKEY_') || line.includes('➤'));
const plugins = lines.filter(line => line.match(/Plugin ready: .*\.ps1/i));
output.innerHTML = `
<h3>🧪 Found ${issues.length} issues</h3>
<div>${issues.map(i => `<div class="issue">${i}</div>`).join('')}</div>
<hr>
<h3>🗂 Registry Keys</h3>
<div>${regKeys.map(k => `<div class="key">${k}</div>`).join('')}</div>
<hr>
<h3>📦 Loaded Plugins</h3>
<div>${plugins.map(p => `<div class="plugin">${p}</div>`).join('')}</div>
`;
}
// Copy output text to clipboard
function copyResult() {
const output = document.getElementById('output');
if (!output.innerText.trim()) return alert("No results to copy yet.");
navigator.clipboard.writeText(output.innerText).then(() =>
alert("Results copied to clipboard!")
);
}
// Save screenshot of the output section
function captureResult() {
html2canvas(document.getElementById('output')).then(canvas => {
const link = document.createElement('a');
link.download = 'crapfixer-results.png';
link.href = canvas.toDataURL();
link.click();
});
}
// Native share (for mobile browsers)
function shareResult() {
const text = document.getElementById('output').innerText;
if (navigator.share) {
navigator.share({
title: 'Crapfixer Analysis Results',
text: text,
}).catch(err => console.log('Share failed:', err));
} else {
alert("Sharing is not supported by your browser.");
}
}
// Share the result as an image on Twitter/X
function shareOnTwitter() {
const outputEl = document.getElementById('output');
if (!outputEl.innerText.trim()) return alert("No results to share yet.");
// Create screenshot from result div
html2canvas(outputEl).then(canvas => {
const dataUrl = canvas.toDataURL("image/png");
// Convert image to base64 string (can't upload directly to Twitter)
// Instead, show preview and user uploads manually via prompt
const win = window.open();
win.document.write(`<h2>📷 Screenshot ready for X / Twitter</h2>`);
win.document.write(`<p>Right-click the image below and save it to upload on Twitter manually.</p>`);
win.document.write(`<img src="${dataUrl}" style="max-width:100%;border:1px solid #ccc;" />`);
win.document.write(`<p><a href="https://twitter.com/intent/tweet?text=Check%20out%20my%20Crapfixer%20analysis!&hashtags=crapfixer,loganalyzer" target="_blank">➡️ Click here to post on X</a></p>`);
});
}
</script>
<!-- ---------- HTML2CANVAS LIBRARY FOR SCREENSHOTS ---------- -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
</body>
</html>
+92 -39
View File
@@ -5,60 +5,121 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Crapfixer Update Check</title>
<style>
:root {
--bg: #f3f6fd;
--primary: #0067c0;
--text: #1b1b1b;
--card-bg: #ffffffcc;
--shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
--radius: 20px;
}
* {
box-sizing: border-box;
}
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
background-color: #f4f6f8;
color: #333;
font-family: "Segoe UI Variable", "Segoe UI", Tahoma, sans-serif;
background: linear-gradient(145deg, #ecf0f7, #f8faff);
color: var(--text);
padding: 2rem;
max-width: 600px;
margin: auto;
margin: 0;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
}
h1 {
color: #2c3e50;
font-size: 2rem;
font-weight: 600;
margin-bottom: 1rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
#status {
background: #fff;
padding: 1rem;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
margin-top: 1rem;
background: var(--card-bg);
backdrop-filter: blur(10px);
padding: 1.5rem;
border-radius: var(--radius);
box-shadow: var(--shadow);
width: 100%;
max-width: 500px;
font-size: 1.1rem;
}
a {
color: #0077cc;
color: var(--primary);
text-decoration: none;
font-weight: 500;
}
a:hover {
text-decoration: underline;
}
.donate {
margin-top: 3rem;
padding: 1rem;
background-color: #e8f5e9;
border-left: 5px solid #4caf50;
border-radius: 5px;
margin-top: 2rem;
padding: 1.5rem;
background-color: #e7f5ec;
border-left: 6px solid #4caf50;
border-radius: var(--radius);
box-shadow: var(--shadow);
max-width: 500px;
width: 100%;
}
.donate strong {
display: block;
font-size: 1.2rem;
margin-bottom: 0.5rem;
}
.donate a {
margin-right: 1rem;
display: inline-block;
}
.project-follow {
margin-top: 1rem;
display: inline-block;
padding: 0.6rem 1.2rem;
background-color: #4caf50;
color: white;
border-radius: 8px;
transition: background 0.3s ease;
}
.donate a:hover {
background-color: #388e3c;
}
.project-follow {
margin-top: 2rem;
text-align: center;
}
.project-follow a {
padding: 10px 20px;
background-color: #24292f; /* GitHub Dark Blue */
padding: 0.8rem 1.5rem;
background: #24292f;
color: white;
border-radius: 5px;
border-radius: var(--radius);
text-decoration: none;
font-size: 16px;
font-size: 1rem;
transition: background 0.3s ease;
display: inline-block;
}
.project-follow a:hover {
background-color: #0366d6; /* GitHub Blue */
background: #0366d6;
}
@media (max-width: 600px) {
body {
padding: 1rem;
}
#status,
.donate {
padding: 1rem;
}
}
</style>
</head>
@@ -68,26 +129,18 @@
<div class="donate">
<strong>💖 Support Crapfixer</strong>
Every donation helps me provide more updates. - Thanks, Belim 🙏
Every donation helps me provide more updates. – Thanks, Belim 🙏
<br /><br />
<a
href="https://www.paypal.com/donate/?hosted_button_id=M9DW4VNKH9ECQ"
target="_blank"
>💸 Donate via PayPal</a
>
<a href="https://ko-fi.com/builtbybel" target="_blank"
>☕ Buy me a Ko-fi</a
>
<a href="https://www.paypal.com/donate/?hosted_button_id=M9DW4VNKH9ECQ" target="_blank">💸 PayPal</a>
<a href="https://ko-fi.com/builtbybel" target="_blank" style="background-color: #ff5f5f;">☕ Ko-fi</a>
</div>
<div class="project-follow">
<a href="https://github.com/builtbybel/Crapfixer" target="_blank"
>🐙 Follow the Project on GitHub</a
>
<a href="https://github.com/builtbybel/Crapfixer" target="_blank">🐙 View on GitHub</a>
</div>
<script>
const latestVersion = "0.55.160";
const latestVersion = "1.0.220";
function compareVersions(v1, v2) {
const a = v1.split(".").map(Number);
+6
View File
@@ -0,0 +1,6 @@
Solitaire,CandyCrush,Netflix,TikTok,Facebook,Twitter,Instagram,Spotify,
Skype,OneNote,OneDrive, Mail, Calendar, Weather,News,Maps,
Groove, Movies,TV, Phone, Camera,Feedback,FeedbackHub, GetHelp,
GetStarted,Messaging,Office,Paint3D,Print3D,StickyNotes,Wallet,
YourPhone,3DViewer,Alarms,VoiceRecorder,ToDo,Whiteboard,ZuneMusic,
ZuneVideo,3DViewer, DevHome, Copilot
+1
View File
@@ -0,0 +1 @@
irm christitus.com/win | iex
+37
View File
@@ -0,0 +1,37 @@
# Run as Admin
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Warning "You need to run this script as an Administrator!"
exit
}
# Load Windows Forms assembly for MessageBox
Add-Type -AssemblyName System.Windows.Forms
# Define the restore point description and type
$description = "Bloatynosy NueEx Restore Point"
$restorePointType = 12 # MODIFY_SETTINGS = 12
# Function to create restore point with progress reporting
function Create-RestorePoint {
Write-Host "Starting to create restore point..." -ForegroundColor Yellow
# Simulate progress
for ($i = 0; $i -le 100; $i += 10) {
Write-Progress -Activity "Creating Restore Point" -Status "$i% Complete" -PercentComplete $i
Start-Sleep -Milliseconds 300 # Simulate some work being done
}
# WMI query to create the restore point
$restorePoint = Get-WmiObject -List Win32_SystemRestore | ForEach-Object {
$_.CreateRestorePoint($description, $restorePointType, 100)
}
Write-Host "Restore point created successfully." -ForegroundColor Green
# Show completion message
[System.Windows.Forms.MessageBox]::Show("Restore point has been created successfully!", "Completion", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)
}
# Execute the restore point creation
Create-RestorePoint
+1
View File
@@ -0,0 +1 @@
iwr https://raw.githubusercontent.com/zoicware/RemoveWindowsAI/main/RemoveAi.ps1 | iex
+172
View File
@@ -0,0 +1,172 @@
# Description:
# This script removes unwanted Apps that come with Windows. If you do not want
# to remove certain Apps comment out the corresponding lines below.
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1
Write-Output "Elevating privileges for this process"
do {} until (Elevate-Privileges SeTakeOwnershipPrivilege)
Write-Output "Uninstalling default apps"
$apps = @(
# default Windows 10 apps
"Microsoft.549981C3F5F10" #Cortana
"Microsoft.3DBuilder"
"Microsoft.Appconnector"
"Microsoft.BingFinance"
"Microsoft.BingNews"
"Microsoft.BingSports"
"Microsoft.BingTranslator"
"Microsoft.BingWeather"
#"Microsoft.FreshPaint"
"Microsoft.GamingServices"
"Microsoft.Microsoft3DViewer"
"Microsoft.MicrosoftOfficeHub"
"Microsoft.MicrosoftPowerBIForWindows"
"Microsoft.MicrosoftSolitaireCollection"
#"Microsoft.MicrosoftStickyNotes"
"Microsoft.MinecraftUWP"
"Microsoft.NetworkSpeedTest"
"Microsoft.Office.OneNote"
"Microsoft.People"
"Microsoft.Print3D"
"Microsoft.SkypeApp"
"Microsoft.Wallet"
#"Microsoft.Windows.Photos"
"Microsoft.WindowsAlarms"
#"Microsoft.WindowsCalculator"
"Microsoft.WindowsCamera"
"microsoft.windowscommunicationsapps"
"Microsoft.WindowsMaps"
"Microsoft.WindowsPhone"
"Microsoft.WindowsSoundRecorder"
#"Microsoft.WindowsStore" # can't be re-installed
"Microsoft.Xbox.TCUI"
"Microsoft.XboxApp"
"Microsoft.XboxGameOverlay"
"Microsoft.XboxGamingOverlay"
"Microsoft.XboxSpeechToTextOverlay"
"Microsoft.YourPhone"
"Microsoft.ZuneMusic"
"Microsoft.ZuneVideo"
"Microsoft.SkypeApp"
"Clipchamp.Clipchamp"
# Threshold 2 apps
"Microsoft.CommsPhone"
"Microsoft.ConnectivityStore"
"Microsoft.GetHelp"
"Microsoft.Getstarted"
"Microsoft.Messaging"
"Microsoft.Office.Sway"
"Microsoft.OneConnect"
"Microsoft.WindowsFeedbackHub"
# Creators Update apps
"Microsoft.Microsoft3DViewer"
#"Microsoft.MSPaint"
#Redstone apps
"Microsoft.BingFoodAndDrink"
"Microsoft.BingHealthAndFitness"
"Microsoft.BingTravel"
"Microsoft.WindowsReadingList"
# Redstone 5 apps
"Microsoft.MixedReality.Portal"
"Microsoft.ScreenSketch"
"Microsoft.XboxGamingOverlay"
# non-Microsoft
"2FE3CB00.PicsArt-PhotoStudio"
"46928bounde.EclipseManager"
"4DF9E0F8.Netflix"
"613EBCEA.PolarrPhotoEditorAcademicEdition"
"6Wunderkinder.Wunderlist"
"7EE7776C.LinkedInforWindows"
"89006A2E.AutodeskSketchBook"
"9E2F88E3.Twitter"
"A278AB0D.DisneyMagicKingdoms"
"A278AB0D.MarchofEmpires"
"ActiproSoftwareLLC.562882FEEB491" # next one is for the Code Writer from Actipro Software LLC
"CAF9E577.Plex"
"ClearChannelRadioDigital.iHeartRadio"
"D52A8D61.FarmVille2CountryEscape"
"D5EA27B7.Duolingo-LearnLanguagesforFree"
"DB6EA5DB.CyberLinkMediaSuiteEssentials"
"DolbyLaboratories.DolbyAccess"
"DolbyLaboratories.DolbyAccess"
"Drawboard.DrawboardPDF"
"Facebook.Facebook"
"Fitbit.FitbitCoach"
"Flipboard.Flipboard"
"GAMELOFTSA.Asphalt8Airborne"
"KeeperSecurityInc.Keeper"
"NORDCURRENT.COOKINGFEVER"
"PandoraMediaInc.29680B314EFC2"
"Playtika.CaesarsSlotsFreeCasino"
"ShazamEntertainmentLtd.Shazam"
"SlingTVLLC.SlingTV"
"SpotifyAB.SpotifyMusic"
"ThumbmunkeysLtd.PhototasticCollage"
"TuneIn.TuneInRadio"
"WinZipComputing.WinZipUniversal"
"XINGAG.XING"
"flaregamesGmbH.RoyalRevolt2"
"king.com.*"
"king.com.BubbleWitch3Saga"
"king.com.CandyCrushSaga"
"king.com.CandyCrushSodaSaga"
"BytedancePte.Ltd.TikTok"
"Facebook.InstagramBeta"
# apps which cannot be removed using Remove-AppxPackage
#"Microsoft.BioEnrollment"
#"Microsoft.MicrosoftEdge"
#"Microsoft.Windows.Cortana"
#"Microsoft.WindowsFeedback"
#"Microsoft.XboxGameCallableUI"
#"Microsoft.XboxIdentityProvider"
#"Windows.ContactSupport"
)
$appxprovisionedpackage = Get-AppxProvisionedPackage -Online
foreach ($app in $apps) {
Write-Output "Trying to remove $app"
Get-AppxPackage -Name $app -AllUsers | Remove-AppxPackage -AllUsers
($appxprovisionedpackage).Where( {$_.DisplayName -EQ $app}) |
Remove-AppxProvisionedPackage -Online
} Write-Host "Clippy has completed the process and removed all possible apps."
# Prevents Apps from re-installing
$cdm = @(
"ContentDeliveryAllowed"
"FeatureManagementEnabled"
"OemPreInstalledAppsEnabled"
"PreInstalledAppsEnabled"
"PreInstalledAppsEverEnabled"
"SilentInstalledAppsEnabled"
"SubscribedContent-314559Enabled"
"SubscribedContent-338387Enabled"
"SubscribedContent-338388Enabled"
"SubscribedContent-338389Enabled"
"SubscribedContent-338393Enabled"
"SubscribedContentEnabled"
"SystemPaneSuggestionsEnabled"
)
New-FolderForced -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager"
foreach ($key in $cdm) {
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" $key 0
}
New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore" "AutoDownload" 2
# Prevents "Suggested Applications" returning
New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" "DisableWindowsConsumerFeatures" 1
+18
View File
@@ -0,0 +1,18 @@
# Function to show a message box
function Show-MessageBox {
param (
[string]$message,
[string]$title = "Information"
)
Add-Type -AssemblyName PresentationFramework
[System.Windows.MessageBox]::Show($message, $title)
}
# Stop Windows Explorer
Stop-Process -Name explorer -Force
# Start Windows Explorer
Start-Process explorer
# Show message box
Show-MessageBox -message "Windows Explorer has been restarted successfully." -title "Crapfixer"
+31
View File
@@ -0,0 +1,31 @@
# Get all installed Windows apps for all users
$allApps = Get-AppxPackage -AllUsers
# Counter for tracking progress
$totalApps = $allApps.Count
$currentAppIndex = 1
$reinstalledCount = 0
# Loop through each app and reinstall
foreach ($app in $allApps) {
# Display current status
Write-Host "[$currentAppIndex / $totalApps] Reinstalling $($app.Name)..." -ForegroundColor Yellow
# Try to reinstall the app
try {
Add-AppxPackage -Register "$($app.InstallLocation)\appxmanifest.xml" -DisableDevelopmentMode -ErrorAction Stop
Write-Host "[$currentAppIndex / $totalApps] $($app.Name) reinstalled successfully." -ForegroundColor Green
$reinstalledCount++
} catch {
Write-Host "[$currentAppIndex / $totalApps] Error occurred while reinstalling $($app.Name): $_" -ForegroundColor Red
}
# Increment the counter
$currentAppIndex++
}
# Display final status
if ($reinstalledCount -eq $totalApps) {
Write-Host "All apps reinstalled successfully." -ForegroundColor Green
Write-Host "Flyby11 has reinstalled everything possible." -ForegroundColor Cyan
}
+60
View File
@@ -0,0 +1,60 @@
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\force-mkdir.psm1
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1
Write-Output "Kill OneDrive process"
taskkill.exe /F /IM "OneDrive.exe"
taskkill.exe /F /IM "explorer.exe"
Write-Output "Remove OneDrive"
if (Test-Path "$env:systemroot\System32\OneDriveSetup.exe") {
& "$env:systemroot\System32\OneDriveSetup.exe" /uninstall
}
if (Test-Path "$env:systemroot\SysWOW64\OneDriveSetup.exe") {
& "$env:systemroot\SysWOW64\OneDriveSetup.exe" /uninstall
}
Write-Output "Removing OneDrive leftovers"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:localappdata\Microsoft\OneDrive"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:programdata\Microsoft OneDrive"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:systemdrive\OneDriveTemp"
# check if directory is empty before removing:
If ((Get-ChildItem "$env:userprofile\OneDrive" -Recurse | Measure-Object).Count -eq 0) {
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:userprofile\OneDrive"
}
Write-Output "Disable OneDrive via Group Policies"
force-mkdir "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive"
Set-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" "DisableFileSyncNGSC" 1
Write-Output "Remove Onedrive from explorer sidebar"
New-PSDrive -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" -Name "HKCR"
mkdir -Force "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
Set-ItemProperty "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
mkdir -Force "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
Set-ItemProperty "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
Remove-PSDrive "HKCR"
# Thank you Matthew Israelsson
Write-Output "Removing run hook for new users"
reg load "hku\Default" "C:\Users\Default\NTUSER.DAT"
reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f
reg unload "hku\Default"
Write-Output "Removing startmenu entry"
Remove-Item -Force -ErrorAction SilentlyContinue "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk"
Write-Output "Removing scheduled task"
Get-ScheduledTask -TaskPath '\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
Write-Output "Restarting explorer"
Start-Process "explorer.exe"
Write-Output "Waiting for explorer to complete loading"
Start-Sleep 10
Write-Output "Removing additional OneDrive leftovers"
foreach ($item in (Get-ChildItem "$env:WinDir\WinSxS\*onedrive*")) {
Takeown-Folder $item.FullName
Remove-Item -Recurse -Force $item.FullName
}
Write-Output "Bloatynosy NueEx can confirm the uninstallation of the OneDrive app."
+32
View File
@@ -0,0 +1,32 @@
[ChrisTitusApp]
description=Chris Titus Tech's Windows Utility - Install Programs, Tweaks, Fixes, and Updates
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/ChrisTitusApp.ps1
[Create Restore Point]
description=Creates a system restore point to allow recovery before major changes are applied.
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Create Restore Point.ps1
[Remove default apps]
description=Removes preinstalled Windows default apps to declutter the system.
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove default apps.ps1
[Remove Windows AI]
description=Disables and removes AI-related features and integrations in Windows.
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove Windows AI.ps1
[Restart Explorer]
description=Restarts the Windows Explorer process to apply changes or recover from crashes.
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Restart Explorer.ps1
[Restore all built-in apps]
description=Restores all removed default Windows apps to their original state.
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Restore all built-in apps.ps1
[Uninstall OneDrive]
description=Completely uninstalls Microsoft OneDrive from the system.
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Uninstall OneDrive.ps1
[CFEnhancer]
description=Enhanced bloatware detection list used instead of the internal signature. If present in the plugins folder, it overrides the built-in bloatware detection mechanism.
url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/CFEnhancer.txt