mirror of
https://github.com/ChrisTitusTech/winutil
synced 2026-04-06 06:38:31 +00:00
Compare commits
3 Commits
26.02.24
...
58dacd5b0b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
58dacd5b0b | ||
|
|
14ad9f7fea | ||
|
|
52afab2252 |
@@ -31,9 +31,10 @@ Winutil is designed for:
|
|||||||
New to Winutil? Start here:
|
New to Winutil? Start here:
|
||||||
|
|
||||||
1. **[Getting Started Guide](getting-started/)** - Installation and first steps
|
1. **[Getting Started Guide](getting-started/)** - Installation and first steps
|
||||||
2. **[Application Store](store/)** - Learn to install software easily
|
2. **[Application Store](application/)** - Learn to install software easily
|
||||||
3. **[Tweaks Guide](tweaks/)** - Optimize your system
|
3. **[Tweaks Guide](tweaks/)** - Optimize your system
|
||||||
4. **[Features & Fixes](features/)** - Troubleshoot common issues
|
4. **[Features & Fixes](features/)** - Troubleshoot common issues
|
||||||
|
5. **[Win11 Creator](win11Creator/)** - Build a custom debloated Windows 11 ISO
|
||||||
|
|
||||||
## Main Features
|
## Main Features
|
||||||
|
|
||||||
@@ -41,7 +42,7 @@ New to Winutil? Start here:
|
|||||||
|
|
||||||
Browse and install hundreds of popular applications with a single click. No more hunting for download links or dealing with installer bloat.
|
Browse and install hundreds of popular applications with a single click. No more hunting for download links or dealing with installer bloat.
|
||||||
|
|
||||||
**[Read the Store Guide →](store/)**
|
**[Read the Store Guide →](application/)**
|
||||||
|
|
||||||
### ⚙️ System Tweaks
|
### ⚙️ System Tweaks
|
||||||
|
|
||||||
@@ -79,16 +80,23 @@ Automate Winutil configurations for:
|
|||||||
|
|
||||||
**[Read the Automation Guide →](automation/)**
|
**[Read the Automation Guide →](automation/)**
|
||||||
|
|
||||||
|
### 💿 Windows 11 Creator
|
||||||
|
|
||||||
|
Build a custom Windows 11 ISO with bloatware removed, telemetry disabled, and hardware requirement checks bypassed — then export it as an ISO file or write it directly to a USB drive.
|
||||||
|
|
||||||
|
**[Read the Win11 Creator Guide →](win11Creator/)**
|
||||||
|
|
||||||
## Quick Links
|
## Quick Links
|
||||||
|
|
||||||
| I want to... | Go to... |
|
| I want to... | Go to... |
|
||||||
|--------------|----------|
|
|--------------|----------|
|
||||||
| Install Winutil for the first time | [Getting Started](getting-started/) |
|
| Install Winutil for the first time | [Getting Started](getting-started/) |
|
||||||
| Install applications quickly | [Application Store](store/) |
|
| Install applications quickly | [Application Store](application/) |
|
||||||
| Speed up my computer | [Tweaks Guide](tweaks/) |
|
| Speed up my computer | [Tweaks Guide](tweaks/) |
|
||||||
| Fix Windows Update problems | [Features - Fixes](features/) |
|
| Fix Windows Update problems | [Features - Fixes](features/) |
|
||||||
| Automate setup for multiple PCs | [Automation](automation/) |
|
| Automate setup for multiple PCs | [Automation](automation/) |
|
||||||
| Understand what tweaks do | [Tweaks Guide](tweaks/) |
|
| Understand what tweaks do | [Tweaks Guide](tweaks/) |
|
||||||
|
| Build a custom Windows 11 ISO | [Win11 Creator](win11Creator/) |
|
||||||
|
|
||||||
## Safety and Best Practices
|
## Safety and Best Practices
|
||||||
|
|
||||||
@@ -143,9 +151,10 @@ Want to help improve Winutil?
|
|||||||
This User Guide covers everything you need to know:
|
This User Guide covers everything you need to know:
|
||||||
|
|
||||||
1. **[Getting Started](getting-started/)** - Installation, first run, basic usage
|
1. **[Getting Started](getting-started/)** - Installation, first run, basic usage
|
||||||
2. **[Application Store](store/)** - Installing software, using presets
|
2. **[Application Store](application/)** - Installing software, using presets
|
||||||
3. **[Tweaks](tweaks/)** - System optimizations and customizations
|
3. **[Tweaks](tweaks/)** - System optimizations and customizations
|
||||||
4. **[Features & Fixes](features/)** - Troubleshooting tools and utilities
|
4. **[Features & Fixes](features/)** - Troubleshooting tools and utilities
|
||||||
|
5. **[Win11 Creator](win11Creator/)** - Build a custom debloated Windows 11 ISO
|
||||||
6. **[Updates](updates/)** - Managing Windows Update behavior
|
6. **[Updates](updates/)** - Managing Windows Update behavior
|
||||||
7. **[Automation](automation/)** - Scripting and batch deployments
|
7. **[Automation](automation/)** - Scripting and batch deployments
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Store
|
title: Applications
|
||||||
weight: 2
|
weight: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Getting Started with Winutil
|
title: Getting Started
|
||||||
weight: 1
|
weight: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ If Winutil downloads but doesn't open:
|
|||||||
|
|
||||||
Now that you're set up, explore these guides:
|
Now that you're set up, explore these guides:
|
||||||
|
|
||||||
- [Application Installation Guide](../store/) - Learn about installing software
|
- [Application Installation Guide](../application/) - Learn about installing software
|
||||||
- [Tweaks Guide](../tweaks/) - Understand system optimizations
|
- [Tweaks Guide](../tweaks/) - Understand system optimizations
|
||||||
- [FAQ](../../faq/) - Common questions and answers
|
- [FAQ](../../faq/) - Common questions and answers
|
||||||
|
|
||||||
153
docs/content/userguide/win11Creator/_index.md
Normal file
153
docs/content/userguide/win11Creator/_index.md
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
---
|
||||||
|
title: Win 11 Creator
|
||||||
|
weight: 5
|
||||||
|
---
|
||||||
|
|
||||||
|
## Using Winutil's Win11 Creator
|
||||||
|
|
||||||
|
Winutil includes a built-in **Win11 Creator** tool that lets you take any official Windows 11 ISO and produce a customized, debloated version — with telemetry removed, hardware requirement checks bypassed, and local account setup enabled out of the box. You can export the result as a new ISO file or write it directly to a USB drive.
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> You need a valid Windows 11 ISO before starting. Download one from [Microsoft's official site](https://www.microsoft.com/en-us/software-download/windows11) or use [UUP Dump](https://uupdump.net/). The process uses ~10–15 GB of temporary disk space, so make sure you have room.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 1 — Select Your ISO
|
||||||
|
|
||||||
|
1. Open Winutil and go to the **Win11 Creator** tab.
|
||||||
|
2. Click **Browse** and select your Windows 11 ISO file (must be 4 GB or larger).
|
||||||
|
3. The file path and size will appear on screen once selected.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 2 — Mount & Verify
|
||||||
|
|
||||||
|
1. Click **Mount & Verify ISO**.
|
||||||
|
2. Winutil mounts the ISO, checks for a valid `install.wim` or `install.esd`, and reads the available editions (Home, Pro, Enterprise, etc.).
|
||||||
|
3. Once verified, select your desired **edition** from the dropdown — Pro is selected by default if available.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> This step takes around 10–30 seconds depending on your drive speed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 3 — Run the Modification
|
||||||
|
|
||||||
|
Click **Run Windows ISO Modification and Creator** to start the customization process. Winutil will:
|
||||||
|
|
||||||
|
- **Remove 40+ bloat apps** — Clipchamp, Teams, Copilot, Dev Home, new Outlook, Bing apps, Solitaire, and more
|
||||||
|
- **Delete OneDrive setup** from the image
|
||||||
|
- **Apply registry tweaks** — disables telemetry, advertising ID, tailored experiences, and cloud content features
|
||||||
|
- **Bypass hardware checks** — removes TPM, Secure Boot, CPU, and RAM requirement enforcement so the ISO installs on unsupported hardware
|
||||||
|
- **Enable local account setup** — injects an `autounattend.xml` that skips the Microsoft account screen during OOBE
|
||||||
|
- **Strip unused editions** — keeps only your selected edition, saving 1–2 GB per removed edition
|
||||||
|
- **Clean the component store** — runs DISM cleanup to reclaim another 300–800 MB
|
||||||
|
- **Remove telemetry scheduled tasks** — CEIP, Appraiser, WaaSMedic, and others
|
||||||
|
|
||||||
|
A live log shows progress as each step completes. This stage takes **10–30 minutes** depending on your disk speed — the WIM dismount near the end is the slowest part, so don't close Winutil while it's running.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 4 — Export Your Result
|
||||||
|
|
||||||
|
Once modification is complete, choose how to save your image:
|
||||||
|
|
||||||
|
{{< tabs items="Save as ISO,Write to USB" defaultIndex="0" >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
1. Click **Save as an ISO File**.
|
||||||
|
2. Choose a save location (defaults to your Desktop as `Win11_Modified_yyyyMMdd.iso`).
|
||||||
|
3. Winutil builds a dual BIOS/UEFI bootable ISO using `oscdimg.exe`.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> `oscdimg.exe` (part of the Windows ADK) is required. If it's not found, Winutil will attempt to install it automatically via winget. If that fails, install it manually: `winget install -e --id Microsoft.OSCDIMG`
|
||||||
|
|
||||||
|
**Typical output size:** 2.5–3.5 GB (down from 5–6 GB original)
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
1. Click **Write Directly to a USB Drive**.
|
||||||
|
2. Select your USB drive from the dropdown (click **Refresh** if it doesn't appear).
|
||||||
|
3. Click **Erase & Write to USB** and confirm the warning — **all data on the drive will be permanently erased**.
|
||||||
|
4. Winutil formats the drive as GPT with a 512 MB EFI partition and copies the modified Windows files.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Double-check you have selected the correct drive before confirming. This operation cannot be undone.
|
||||||
|
|
||||||
|
**Minimum USB size:** 8 GB recommended. Writing takes 10–20 minutes.
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 5 — Clean Up (Optional)
|
||||||
|
|
||||||
|
Click **Clean & Reset** to delete the temporary working directory (~10–15 GB) and reset the tool back to its initial state, ready for a new ISO. You'll be asked to confirm before anything is deleted.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### What the Modified ISO Does Differently
|
||||||
|
|
||||||
|
When you install Windows 11 from your modified ISO:
|
||||||
|
|
||||||
|
- **No Microsoft account required** — create a local account directly during setup
|
||||||
|
- **No hardware checks** — installs on machines without TPM 2.0, Secure Boot, or supported CPUs
|
||||||
|
- **Dark mode enabled by default**
|
||||||
|
- **Empty taskbar and Start Menu** — no pinned apps
|
||||||
|
- **Windows Update re-enabled automatically** after first login (it's paused during OOBE to prevent interruption)
|
||||||
|
- **BitLocker disabled**, Recall disabled, desktop shortcuts removed
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
| Problem | Fix |
|
||||||
|
|---------|-----|
|
||||||
|
| "install.wim not found" | Not a valid Windows 11 ISO — download a fresh one from Microsoft |
|
||||||
|
| "oscdimg.exe not found" | Run `winget install -e --id Microsoft.OSCDIMG` then retry |
|
||||||
|
| USB drive not showing up | Plug it in, wait a few seconds, then click **Refresh** |
|
||||||
|
| Modification seems stuck | The WIM dismount step is slow — wait at least 10 minutes before assuming it's frozen |
|
||||||
|
| "Access Denied" error | Make sure Winutil is running as Administrator |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
A list of the best free and open source tools for downloading, creating and flashing Windows ISOs.
|
||||||
|
|
||||||
|
## Download Windows ISOs
|
||||||
|
|
||||||
|
| Tool | Description | Website |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| **[UUP Dump](https://uupdump.net/)** | Download Windows UUP files directly from Microsoft's servers and convert them into a clean ISO — great for getting the latest builds | [uupdump.net](https://uupdump.net/) |
|
||||||
|
| **[Microsoft Media Creation Tool](https://www.microsoft.com/en-us/software-download/windows11)** | Microsoft's official tool for downloading and creating Windows 10/11 installation media | [microsoft.com](https://www.microsoft.com/en-us/software-download/windows11) |
|
||||||
|
|
||||||
|
|
||||||
|
## Customize Windows ISOs
|
||||||
|
|
||||||
|
| Tool | Description | Website |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| **[MicroWin](https://github.com/CodingWonders/microwin)** | A C# desktop app for building stripped-down, customized Windows ISOs — the original predecessor to Winutil's old MicroWin feature | [github.com](https://github.com/CodingWonders/microwin) |
|
||||||
|
| **[Tiny11 Builder](https://github.com/ntdevlabs/tiny11builder)** | PowerShell script that strips a Windows 11 ISO down to the bare minimum — removes bloatware and bypasses hardware requirements | [github.com](https://github.com/ntdevlabs/tiny11builder) |
|
||||||
|
| **[NTLite](https://www.ntlite.com/)** | Remove Windows components, integrate drivers and updates, and build a custom ISO before installation | [ntlite.com](https://www.ntlite.com/) |
|
||||||
|
|
||||||
|
|
||||||
|
## Flash ISOs to USB
|
||||||
|
|
||||||
|
| Tool | Description | Website |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| **[Rufus](https://rufus.ie/)** | The go-to tool for creating bootable Windows USB drives. Supports bypassing Windows 11 TPM/Secure Boot requirements and downloading ISOs directly | [rufus.ie](https://rufus.ie/) |
|
||||||
|
| **[Ventoy](https://www.ventoy.net/)** | Install once, then just copy any ISO files onto the USB — supports booting multiple ISOs from a single drive without re-flashing | [ventoy.net](https://www.ventoy.net/) |
|
||||||
|
| **[balenaEtcher](https://etcher.balena.io/)** | Simple, beginner-friendly ISO flasher with a clean interface | [etcher.balena.io](https://etcher.balena.io/) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Already have a Windows 11 ISO? Skip the third-party tools and use Winutil's built-in **[Win11 Creator](#using-winutilss-win11-creator)** at the top of this page.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Always download Windows ISOs from official Microsoft sources or trusted tools like Rufus/UUP Dump to avoid tampered images.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Newer Windows 11 ISOs may not boot correctly on older versions of Ventoy — make sure Ventoy is up to date before use. If issues persist after updating, this is a Ventoy compatibility limitation outside of Winutil's control.
|
||||||
@@ -124,7 +124,15 @@ function Invoke-WinUtilISOMountAndVerify {
|
|||||||
[void]$sync["WPFWin11ISOEditionComboBox"].Items.Add("$($img.ImageIndex): $($img.ImageName)")
|
[void]$sync["WPFWin11ISOEditionComboBox"].Items.Add("$($img.ImageIndex): $($img.ImageName)")
|
||||||
}
|
}
|
||||||
if ($sync["WPFWin11ISOEditionComboBox"].Items.Count -gt 0) {
|
if ($sync["WPFWin11ISOEditionComboBox"].Items.Count -gt 0) {
|
||||||
$sync["WPFWin11ISOEditionComboBox"].SelectedIndex = 0
|
# Default to Windows 11 Pro; fall back to first item if not found
|
||||||
|
$proIndex = -1
|
||||||
|
for ($i = 0; $i -lt $sync["WPFWin11ISOEditionComboBox"].Items.Count; $i++) {
|
||||||
|
if ($sync["WPFWin11ISOEditionComboBox"].Items[$i] -match "Windows 11 Pro(?![\w ])") {
|
||||||
|
$proIndex = $i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$sync["WPFWin11ISOEditionComboBox"].SelectedIndex = if ($proIndex -ge 0) { $proIndex } else { 0 }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
$sync["WPFWin11ISOVerifyResultPanel"].Visibility = "Visible"
|
$sync["WPFWin11ISOVerifyResultPanel"].Visibility = "Visible"
|
||||||
@@ -513,11 +521,17 @@ function Invoke-WinUtilISOExport {
|
|||||||
|
|
||||||
$outputISO = $dlg.FileName
|
$outputISO = $dlg.FileName
|
||||||
Write-Win11ISOLog "Exporting to ISO: $outputISO"
|
Write-Win11ISOLog "Exporting to ISO: $outputISO"
|
||||||
|
|
||||||
Set-WinUtilProgressBar -Label "Building ISO..." -Percent 10
|
Set-WinUtilProgressBar -Label "Building ISO..." -Percent 10
|
||||||
|
|
||||||
# Locate oscdimg.exe (Windows ADK)
|
# Locate oscdimg.exe (Windows ADK or winget per-user install)
|
||||||
$oscdimg = Get-ChildItem "C:\Program Files (x86)\Windows Kits" -Recurse -Filter "oscdimg.exe" -ErrorAction SilentlyContinue |
|
$oscdimg = Get-ChildItem "C:\Program Files (x86)\Windows Kits" -Recurse -Filter "oscdimg.exe" -ErrorAction SilentlyContinue |
|
||||||
Select-Object -First 1 -ExpandProperty FullName
|
Select-Object -First 1 -ExpandProperty FullName
|
||||||
|
if (-not $oscdimg) {
|
||||||
|
$oscdimg = Get-ChildItem "$env:LOCALAPPDATA\Microsoft\WinGet\Packages" -Recurse -Filter "oscdimg.exe" -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.FullName -match 'Microsoft\.OSCDIMG' } |
|
||||||
|
Select-Object -First 1 -ExpandProperty FullName
|
||||||
|
}
|
||||||
|
|
||||||
if (-not $oscdimg) {
|
if (-not $oscdimg) {
|
||||||
Write-Win11ISOLog "oscdimg.exe not found. Attempting to install via winget..."
|
Write-Win11ISOLog "oscdimg.exe not found. Attempting to install via winget..."
|
||||||
@@ -526,8 +540,9 @@ function Invoke-WinUtilISOExport {
|
|||||||
$winget = Get-Command winget -ErrorAction Stop
|
$winget = Get-Command winget -ErrorAction Stop
|
||||||
$result = & $winget install -e --id Microsoft.OSCDIMG --accept-package-agreements --accept-source-agreements 2>&1
|
$result = & $winget install -e --id Microsoft.OSCDIMG --accept-package-agreements --accept-source-agreements 2>&1
|
||||||
Write-Win11ISOLog "winget output: $result"
|
Write-Win11ISOLog "winget output: $result"
|
||||||
# Re-scan for oscdimg after install
|
# Re-scan after install
|
||||||
$oscdimg = Get-ChildItem "C:\Program Files (x86)\Windows Kits" -Recurse -Filter "oscdimg.exe" -ErrorAction SilentlyContinue |
|
$oscdimg = Get-ChildItem "$env:LOCALAPPDATA\Microsoft\WinGet\Packages" -Recurse -Filter "oscdimg.exe" -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.FullName -match 'Microsoft\.OSCDIMG' } |
|
||||||
Select-Object -First 1 -ExpandProperty FullName
|
Select-Object -First 1 -ExpandProperty FullName
|
||||||
} catch {
|
} catch {
|
||||||
Write-Win11ISOLog "winget not available or install failed: $_"
|
Write-Win11ISOLog "winget not available or install failed: $_"
|
||||||
@@ -559,7 +574,31 @@ function Invoke-WinUtilISOExport {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
Write-Win11ISOLog "Running oscdimg..."
|
Write-Win11ISOLog "Running oscdimg..."
|
||||||
$proc = Start-Process -FilePath $oscdimg -ArgumentList $oscdimgArgs -Wait -PassThru -NoNewWindow
|
$psi = [System.Diagnostics.ProcessStartInfo]::new()
|
||||||
|
$psi.FileName = $oscdimg
|
||||||
|
$psi.Arguments = $oscdimgArgs -join " "
|
||||||
|
$psi.RedirectStandardOutput = $true
|
||||||
|
$psi.RedirectStandardError = $true
|
||||||
|
$psi.UseShellExecute = $false
|
||||||
|
$psi.CreateNoWindow = $true
|
||||||
|
|
||||||
|
$proc = [System.Diagnostics.Process]::new()
|
||||||
|
$proc.StartInfo = $psi
|
||||||
|
$proc.Start() | Out-Null
|
||||||
|
|
||||||
|
# Stream stdout and stderr line-by-line to the status log
|
||||||
|
$stdoutTask = $proc.StandardOutput.ReadToEndAsync()
|
||||||
|
$stderrTask = $proc.StandardError.ReadToEndAsync()
|
||||||
|
$proc.WaitForExit()
|
||||||
|
[System.Threading.Tasks.Task]::WaitAll($stdoutTask, $stderrTask)
|
||||||
|
|
||||||
|
foreach ($line in ($stdoutTask.Result -split "`r?`n")) {
|
||||||
|
if ($line.Trim()) { Write-Win11ISOLog $line }
|
||||||
|
}
|
||||||
|
foreach ($line in ($stderrTask.Result -split "`r?`n")) {
|
||||||
|
if ($line.Trim()) { Write-Win11ISOLog "[stderr]$line" }
|
||||||
|
}
|
||||||
|
|
||||||
if ($proc.ExitCode -eq 0) {
|
if ($proc.ExitCode -eq 0) {
|
||||||
Set-WinUtilProgressBar -Label "ISO exported ✔" -Percent 100
|
Set-WinUtilProgressBar -Label "ISO exported ✔" -Percent 100
|
||||||
Write-Win11ISOLog "ISO exported successfully: $outputISO"
|
Write-Win11ISOLog "ISO exported successfully: $outputISO"
|
||||||
|
|||||||
@@ -7,9 +7,8 @@ function Invoke-WinUtilISOScript {
|
|||||||
Performs the following operations against an already-mounted WIM image:
|
Performs the following operations against an already-mounted WIM image:
|
||||||
|
|
||||||
1. Removes provisioned AppX bloatware packages via DISM.
|
1. Removes provisioned AppX bloatware packages via DISM.
|
||||||
2. Deletes Microsoft Edge program files.
|
2. Removes OneDriveSetup.exe from the system image.
|
||||||
3. Removes OneDriveSetup.exe from the system image.
|
3. Loads offline registry hives (COMPONENTS, DEFAULT, NTUSER, SOFTWARE, SYSTEM)
|
||||||
4. Loads offline registry hives (COMPONENTS, DEFAULT, NTUSER, SOFTWARE, SYSTEM)
|
|
||||||
and applies the following tweaks:
|
and applies the following tweaks:
|
||||||
- Bypasses hardware requirement checks (CPU, RAM, SecureBoot, Storage, TPM).
|
- Bypasses hardware requirement checks (CPU, RAM, SecureBoot, Storage, TPM).
|
||||||
- Disables sponsored-app delivery and ContentDeliveryManager features.
|
- Disables sponsored-app delivery and ContentDeliveryManager features.
|
||||||
@@ -19,14 +18,13 @@ function Invoke-WinUtilISOScript {
|
|||||||
- Disables reserved storage.
|
- Disables reserved storage.
|
||||||
- Disables BitLocker device encryption.
|
- Disables BitLocker device encryption.
|
||||||
- Hides the Chat (Teams) taskbar icon.
|
- Hides the Chat (Teams) taskbar icon.
|
||||||
- Removes Edge uninstall registry entries.
|
|
||||||
- Disables OneDrive folder backup (KFM).
|
- Disables OneDrive folder backup (KFM).
|
||||||
- Disables telemetry, advertising ID, and input personalization.
|
- Disables telemetry, advertising ID, and input personalization.
|
||||||
- Blocks post-install delivery of DevHome, Outlook, and Teams.
|
- Blocks post-install delivery of DevHome, Outlook, and Teams.
|
||||||
- Disables Windows Copilot.
|
- Disables Windows Copilot.
|
||||||
- Disables Windows Update during OOBE.
|
- Disables Windows Update during OOBE.
|
||||||
5. Deletes unwanted scheduled-task XML definition files (CEIP, Appraiser, etc.).
|
4. Deletes unwanted scheduled-task XML definition files (CEIP, Appraiser, etc.).
|
||||||
6. Removes the support\ folder from the ISO contents directory (if supplied).
|
5. Removes the support\ folder from the ISO contents directory (if supplied).
|
||||||
|
|
||||||
Mounting and dismounting the WIM is the responsibility of the caller
|
Mounting and dismounting the WIM is the responsibility of the caller
|
||||||
(e.g. Invoke-WinUtilISO).
|
(e.g. Invoke-WinUtilISO).
|
||||||
@@ -122,7 +120,6 @@ function Invoke-WinUtilISOScript {
|
|||||||
'Microsoft.BingWeather',
|
'Microsoft.BingWeather',
|
||||||
'Microsoft.Copilot',
|
'Microsoft.Copilot',
|
||||||
'Microsoft.Windows.CrossDevice',
|
'Microsoft.Windows.CrossDevice',
|
||||||
'Microsoft.GamingApp',
|
|
||||||
'Microsoft.GetHelp',
|
'Microsoft.GetHelp',
|
||||||
'Microsoft.Getstarted',
|
'Microsoft.Getstarted',
|
||||||
'Microsoft.Microsoft3DViewer',
|
'Microsoft.Microsoft3DViewer',
|
||||||
@@ -167,13 +164,7 @@ function Invoke-WinUtilISOScript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
# 2. Remove Edge
|
# 2. Remove OneDrive
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
|
||||||
& $Log "Removing Edge..."
|
|
||||||
Remove-Item -Path "$ScratchDir\Program Files (x86)\Microsoft\Edge" -Recurse -Force -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
|
||||||
# 3. Remove OneDrive
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
& $Log "Removing OneDrive..."
|
& $Log "Removing OneDrive..."
|
||||||
& takeown /f "$ScratchDir\Windows\System32\OneDriveSetup.exe" | Out-Null
|
& takeown /f "$ScratchDir\Windows\System32\OneDriveSetup.exe" | Out-Null
|
||||||
@@ -181,7 +172,7 @@ function Invoke-WinUtilISOScript {
|
|||||||
Remove-Item -Path "$ScratchDir\Windows\System32\OneDriveSetup.exe" -Force -ErrorAction SilentlyContinue
|
Remove-Item -Path "$ScratchDir\Windows\System32\OneDriveSetup.exe" -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
# 4. Registry tweaks
|
# 3. Registry tweaks
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
& $Log "Loading offline registry hives..."
|
& $Log "Loading offline registry hives..."
|
||||||
reg load HKLM\zCOMPONENTS "$ScratchDir\Windows\System32\config\COMPONENTS"
|
reg load HKLM\zCOMPONENTS "$ScratchDir\Windows\System32\config\COMPONENTS"
|
||||||
@@ -258,10 +249,6 @@ function Invoke-WinUtilISOScript {
|
|||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\Windows Chat' 'ChatIcon' 'REG_DWORD' '3'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\Windows Chat' 'ChatIcon' 'REG_DWORD' '3'
|
||||||
Set-ISOScriptReg 'HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced' 'TaskbarMn' 'REG_DWORD' '0'
|
Set-ISOScriptReg 'HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced' 'TaskbarMn' 'REG_DWORD' '0'
|
||||||
|
|
||||||
& $Log "Removing Edge registry entries..."
|
|
||||||
Remove-ISOScriptReg 'HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge'
|
|
||||||
Remove-ISOScriptReg 'HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update'
|
|
||||||
|
|
||||||
& $Log "Disabling OneDrive folder backup..."
|
& $Log "Disabling OneDrive folder backup..."
|
||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\OneDrive' 'DisableFileSyncNGSC' 'REG_DWORD' '1'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\OneDrive' 'DisableFileSyncNGSC' 'REG_DWORD' '1'
|
||||||
|
|
||||||
@@ -291,7 +278,18 @@ function Invoke-WinUtilISOScript {
|
|||||||
|
|
||||||
& $Log "Disabling Windows Update during OOBE (re-enabled on first logon via FirstLogon.ps1)..."
|
& $Log "Disabling Windows Update during OOBE (re-enabled on first logon via FirstLogon.ps1)..."
|
||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' 'NoAutoUpdate' 'REG_DWORD' '1'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' 'NoAutoUpdate' 'REG_DWORD' '1'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' 'AUOptions' 'REG_DWORD' '1'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' 'UseWUServer' 'REG_DWORD' '1'
|
||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' 'DisableWindowsUpdateAccess' 'REG_DWORD' '1'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' 'DisableWindowsUpdateAccess' 'REG_DWORD' '1'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' 'WUServer' 'REG_SZ' 'http://localhost:8080'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' 'WUStatusServer' 'REG_SZ' 'http://localhost:8080'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Orchestrator\UScheduler_Oobe\WindowsUpdate' 'workCompleted' 'REG_DWORD' '1'
|
||||||
|
Remove-ISOScriptReg 'HKLM\zSOFTWARE\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\WindowsUpdate'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config' 'DODownloadMode' 'REG_DWORD' '0'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSYSTEM\ControlSet001\Services\BITS' 'Start' 'REG_DWORD' '4'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSYSTEM\ControlSet001\Services\wuauserv' 'Start' 'REG_DWORD' '4'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSYSTEM\ControlSet001\Services\UsoSvc' 'Start' 'REG_DWORD' '4'
|
||||||
|
Set-ISOScriptReg 'HKLM\zSYSTEM\ControlSet001\Services\WaaSMedicSvc' 'Start' 'REG_DWORD' '4'
|
||||||
|
|
||||||
& $Log "Preventing installation of Teams..."
|
& $Log "Preventing installation of Teams..."
|
||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Teams' 'DisableInstallation' 'REG_DWORD' '1'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Teams' 'DisableInstallation' 'REG_DWORD' '1'
|
||||||
@@ -307,7 +305,7 @@ function Invoke-WinUtilISOScript {
|
|||||||
reg unload HKLM\zSYSTEM
|
reg unload HKLM\zSYSTEM
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
# 5. Delete scheduled task definition files
|
# 4. Delete scheduled task definition files
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
& $Log "Deleting scheduled task definition files..."
|
& $Log "Deleting scheduled task definition files..."
|
||||||
$tasksPath = "$ScratchDir\Windows\System32\Tasks"
|
$tasksPath = "$ScratchDir\Windows\System32\Tasks"
|
||||||
@@ -317,11 +315,17 @@ function Invoke-WinUtilISOScript {
|
|||||||
Remove-Item "$tasksPath\Microsoft\Windows\Application Experience\ProgramDataUpdater" -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\Application Experience\ProgramDataUpdater" -Force -ErrorAction SilentlyContinue
|
||||||
Remove-Item "$tasksPath\Microsoft\Windows\Chkdsk\Proxy" -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\Chkdsk\Proxy" -Force -ErrorAction SilentlyContinue
|
||||||
Remove-Item "$tasksPath\Microsoft\Windows\Windows Error Reporting\QueueReporting" -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\Windows Error Reporting\QueueReporting" -Force -ErrorAction SilentlyContinue
|
||||||
|
Remove-Item "$tasksPath\Microsoft\Windows\InstallService" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
Remove-Item "$tasksPath\Microsoft\Windows\UpdateOrchestrator" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
Remove-Item "$tasksPath\Microsoft\Windows\UpdateAssistant" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
Remove-Item "$tasksPath\Microsoft\Windows\WaaSMedic" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
Remove-Item "$tasksPath\Microsoft\Windows\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
Remove-Item "$tasksPath\Microsoft\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
& $Log "Scheduled task files deleted."
|
& $Log "Scheduled task files deleted."
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
# 6. Remove ISO support folder (fresh-install only; not needed)
|
# 5. Remove ISO support folder (fresh-install only; not needed)
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ═════════════════════════════════════════════════════════════════════════
|
||||||
if ($ISOContentsDir -and (Test-Path $ISOContentsDir)) {
|
if ($ISOContentsDir -and (Test-Path $ISOContentsDir)) {
|
||||||
& $Log "Removing ISO support\ folder..."
|
& $Log "Removing ISO support\ folder..."
|
||||||
|
|||||||
@@ -449,8 +449,17 @@ $scripts = @(
|
|||||||
) -Force -ErrorAction 'SilentlyContinue' -Verbose;
|
) -Force -ErrorAction 'SilentlyContinue' -Verbose;
|
||||||
};
|
};
|
||||||
{
|
{
|
||||||
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /f;
|
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /f;
|
||||||
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DisableWindowsUpdateAccess /f;
|
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v AUOptions /f;
|
||||||
|
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /f;
|
||||||
|
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DisableWindowsUpdateAccess /f;
|
||||||
|
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v WUServer /f;
|
||||||
|
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v WUStatusServer /f;
|
||||||
|
reg.exe delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" /v DODownloadMode /f;
|
||||||
|
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\BITS" /v Start /t REG_DWORD /d 3 /f;
|
||||||
|
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\wuauserv" /v Start /t REG_DWORD /d 3 /f;
|
||||||
|
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\UsoSvc" /v Start /t REG_DWORD /d 2 /f;
|
||||||
|
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc" /v Start /t REG_DWORD /d 3 /f;
|
||||||
};
|
};
|
||||||
{
|
{
|
||||||
$recallFeature = Get-WindowsOptionalFeature -Online -ErrorAction SilentlyContinue | Where-Object { $_.State -eq 'Enabled' -and $_.FeatureName -like 'Recall' };
|
$recallFeature = Get-WindowsOptionalFeature -Online -ErrorAction SilentlyContinue | Where-Object { $_.State -eq 'Enabled' -and $_.FeatureName -like 'Recall' };
|
||||||
|
|||||||
Reference in New Issue
Block a user