mirror of
https://github.com/ChrisTitusTech/winutil
synced 2026-02-06 07:50:10 +00:00
Compare commits
11 Commits
b02c7f3eab
...
26.01.27
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59a9c59064 | ||
|
|
fcc57fde50 | ||
|
|
06e5477d0e | ||
|
|
a5271597e9 | ||
|
|
d841792f8d | ||
|
|
132260ab96 | ||
|
|
919b2e0b8f | ||
|
|
22e083182d | ||
|
|
2ec37f952a | ||
|
|
aa719b49bf | ||
|
|
e9a6cd32d8 |
@@ -76,7 +76,7 @@ You'll see a new file named `winutil.ps1`, which's created by `Compile.ps1` scri
|
|||||||
|
|
||||||
These are the sponsors that help keep this project alive with monthly contributions.
|
These are the sponsors that help keep this project alive with monthly contributions.
|
||||||
|
|
||||||
<!-- sponsors --><a href="https://github.com/markamos"><img src="https://github.com/markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https://github.com/dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https://github.com/mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https://github.com/jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https://github.com/robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https://github.com/KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https://github.com/paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https://github.com/djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https://github.com/anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https://github.com/FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https://github.com/DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/quaszi"><img src="https://github.com/quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https://github.com/DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https://github.com/KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/TaNorbs"><img src="https://github.com/TaNorbs.png" width="60px" alt="User avatar: Norbs" /></a><!-- sponsors -->
|
<!-- sponsors --><a href="https://github.com/markamos"><img src="https://github.com/markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https://github.com/dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https://github.com/mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https://github.com/jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https://github.com/robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https://github.com/KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https://github.com/paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https://github.com/djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https://github.com/anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https://github.com/FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https://github.com/DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/quaszi"><img src="https://github.com/quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https://github.com/DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https://github.com/KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/andrewpayne68"><img src="https://github.com/andrewpayne68.png" width="60px" alt="User avatar: Andrew P" /></a><!-- sponsors -->
|
||||||
|
|
||||||
## 🏅 Thanks to all Contributors
|
## 🏅 Thanks to all Contributors
|
||||||
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.
|
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.
|
||||||
|
|||||||
@@ -1584,71 +1584,26 @@
|
|||||||
"
|
"
|
||||||
# Disable Defender Auto Sample Submission
|
# Disable Defender Auto Sample Submission
|
||||||
Set-MpPreference -SubmitSamplesConsent 2
|
Set-MpPreference -SubmitSamplesConsent 2
|
||||||
|
|
||||||
|
$Memory = (Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum).Sum / 1KB
|
||||||
|
Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\" -Name SvcHostSplitThresholdInKB -Value $Memory
|
||||||
"
|
"
|
||||||
],
|
],
|
||||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/tele"
|
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/tele"
|
||||||
},
|
},
|
||||||
"WPFTweaksDisableEdge": {
|
"WPFTweaksRemoveEdge": {
|
||||||
"Content": "Disable Edge",
|
"Content": "Remove Microsoft Edge",
|
||||||
"Description": "Prevent msedge.exe from running with explorer policies.",
|
"Description": "Unblocks Microsoft Edge uninstaller restrictions than uses that uninstaller to remove Microsoft Edge",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Order": "a023_",
|
"Order": "a028_",
|
||||||
"registry": [
|
|
||||||
{
|
|
||||||
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\DisallowRun",
|
|
||||||
"Name": "DisableEdge",
|
|
||||||
"Type": "String",
|
|
||||||
"Value": "msedge.exe",
|
|
||||||
"OriginalValue": "<RemoveEntry>"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Path": "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
|
|
||||||
"Name": "DisallowRun",
|
|
||||||
"Type": "DWord",
|
|
||||||
"Value": "1",
|
|
||||||
"OriginalValue": "<RemoveEntry>"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"link": ""
|
|
||||||
},
|
|
||||||
"WPFTweaksMakeEdgeUninstallable": {
|
|
||||||
"Content": "Make Edge Uninstallable via settings",
|
|
||||||
"Description": "Makes it so you can uninstall edge via settings > installed apps",
|
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
|
||||||
"panel": "1",
|
|
||||||
"Order": "a026_",
|
|
||||||
"registry": [
|
|
||||||
{
|
|
||||||
"Path": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge",
|
|
||||||
"Name": "NoRemove",
|
|
||||||
"Type": "Dword",
|
|
||||||
"Value": "0",
|
|
||||||
"OriginalValue": "1"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
"
|
"Invoke-WinUtilRemoveEdge"
|
||||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
|
||||||
|
|
||||||
takeown /f $File
|
|
||||||
icacls $File /grant \"Administrators:(F)\"
|
|
||||||
|
|
||||||
$FileContent = Get-Content $File
|
|
||||||
$FileContent[7] = $FileContent[7] -replace \"disabled\", \"enabled\"
|
|
||||||
Set-Content $File $FileContent
|
|
||||||
"
|
|
||||||
],
|
],
|
||||||
"UndoScript": [
|
"UndoScript": [
|
||||||
"
|
"
|
||||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
Write-Host 'Installing Microsoft Edge...'
|
||||||
|
winget install Microsoft.Edge --source winget
|
||||||
takeown /f $File
|
|
||||||
icacls $File /grant \"Administrators:(F)\"
|
|
||||||
|
|
||||||
$FileContent = Get-Content $File
|
|
||||||
$FileContent[7] = $FileContent[7] -replace \"enabled\", \"disabled\"
|
|
||||||
Set-Content $File $FileContent
|
|
||||||
"
|
"
|
||||||
],
|
],
|
||||||
"link": ""
|
"link": ""
|
||||||
@@ -1663,13 +1618,45 @@
|
|||||||
{
|
{
|
||||||
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",
|
||||||
"Name": "RealTimeIsUniversal",
|
"Name": "RealTimeIsUniversal",
|
||||||
"Type": "DWord",
|
"Type": "QWord",
|
||||||
"Value": "1",
|
"Value": "1",
|
||||||
"OriginalValue": "0"
|
"OriginalValue": "0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/utc"
|
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/utc"
|
||||||
},
|
},
|
||||||
|
"WPFTweaksRemoveOneDrive": {
|
||||||
|
"Content": "Remove OneDrive",
|
||||||
|
"Description": "Denys permission to remove onedrive user files than uses its own uninstaller to remove it than brings back permissions",
|
||||||
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
|
"panel": "1",
|
||||||
|
"Order": "a029_",
|
||||||
|
"InvokeScript": [
|
||||||
|
"
|
||||||
|
# Deny permission to remove OneDrive folder
|
||||||
|
icacls $Env:OneDrive /deny \"Administrators:(D,DC)\"
|
||||||
|
|
||||||
|
Write-Host \"Uninstalling OneDrive...\"
|
||||||
|
Start-Process 'C:\\Windows\\System32\\OneDriveSetup.exe' -ArgumentList '/uninstall' -Wait
|
||||||
|
|
||||||
|
# Some of OneDrive files use explorer, and OneDrive uses FileCoAuth
|
||||||
|
Write-Host \"Removing leftover OneDrive Files...\"
|
||||||
|
Stop-Process -Name FileCoAuth,Explorer
|
||||||
|
Remove-Item \"$Env:LocalAppData\\Microsoft\\OneDrive\" -Recurse -Force
|
||||||
|
Remove-Item \"C:\\ProgramData\\Microsoft OneDrive\" -Recurse -Force
|
||||||
|
|
||||||
|
# Grant back permission to accses OneDrive folder
|
||||||
|
icacls $Env:OneDrive /grant \"Administrators:(D,DC)\"
|
||||||
|
"
|
||||||
|
],
|
||||||
|
"UndoScript": [
|
||||||
|
"
|
||||||
|
Write-Host \"Installing OneDrive\"
|
||||||
|
winget install Microsoft.Onedrive --source winget
|
||||||
|
"
|
||||||
|
],
|
||||||
|
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/removeonedrive"
|
||||||
|
},
|
||||||
"WPFTweaksRemoveHome": {
|
"WPFTweaksRemoveHome": {
|
||||||
"Content": "Remove Home from Explorer",
|
"Content": "Remove Home from Explorer",
|
||||||
"Description": "Removes the Home from Explorer and sets This PC as default",
|
"Description": "Removes the Home from Explorer and sets This PC as default",
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ weight: 3
|
|||||||
- [Remove Home and Gallery from explorer](tweaks/z--advanced-tweaks---caution/removehomegallery/)
|
- [Remove Home and Gallery from explorer](tweaks/z--advanced-tweaks---caution/removehomegallery/)
|
||||||
- [Make Edge Uninstallable](tweaks/z--advanced-tweaks---caution/edgeuninstall/)
|
- [Make Edge Uninstallable](tweaks/z--advanced-tweaks---caution/edgeuninstall/)
|
||||||
- [Run OO Shutup 10](tweaks/z--advanced-tweaks---caution/oosubutton/)
|
- [Run OO Shutup 10](tweaks/z--advanced-tweaks---caution/oosubutton/)
|
||||||
|
- [Remove OneDrive](tweaks/z--advanced-tweaks---caution//removeonedrive)
|
||||||
- [Set Classic Right-Click Menu ](tweaks/z--advanced-tweaks---caution/rightclickmenu/)
|
- [Set Classic Right-Click Menu ](tweaks/z--advanced-tweaks---caution/rightclickmenu/)
|
||||||
- [Set Display for Performance](tweaks/z--advanced-tweaks---caution/display/)
|
- [Set Display for Performance](tweaks/z--advanced-tweaks---caution/display/)
|
||||||
- [Set Time to UTC (Dual Boot)](tweaks/z--advanced-tweaks---caution/utc/)
|
- [Set Time to UTC (Dual Boot)](tweaks/z--advanced-tweaks---caution/utc/)
|
||||||
@@ -76,7 +77,7 @@ weight: 3
|
|||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
- [Remove Adobe Creative Cloud](features/fixes/runadobecccl cleanertool/)
|
- [Remove Adobe Creative Cloud](features/fixes/RunAdobeCCCleanerTool/)
|
||||||
- [Reset Network](features/fixes/network/)
|
- [Reset Network](features/fixes/network/)
|
||||||
- [Reset Windows Update](features/fixes/update/)
|
- [Reset Windows Update](features/fixes/update/)
|
||||||
- [Set Up Autologin](features/fixes/autologin/)
|
- [Set Up Autologin](features/fixes/autologin/)
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
- [Remove Gallery from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveGallery.md)
|
- [Remove Gallery from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveGallery.md)
|
||||||
- [Remove Home from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHome.md)
|
- [Remove Home from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHome.md)
|
||||||
- [Run OO Shutup 10](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md)
|
- [Run OO Shutup 10](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md)
|
||||||
|
- [Remove OneDrive](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveOneDrive.md)
|
||||||
- [Set Classic Right-Click Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu.md)
|
- [Set Classic Right-Click Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu.md)
|
||||||
- [Set Display for Performance](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display.md)
|
- [Set Display for Performance](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display.md)
|
||||||
- [Set Time to UTC (Dual Boot)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md)
|
- [Set Time to UTC (Dual Boot)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md)
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
# Remove Microsoft Edge
|
|
||||||
|
|
||||||
```json
|
|
||||||
"WPFTweaksMakeEdgeUninstallable": {
|
|
||||||
"Content": "Make Edge Uninstallable via settings",
|
|
||||||
"Description": "Makes it so you can uninstall edge via settings > installed apps",
|
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
|
||||||
"panel": "1",
|
|
||||||
"Order": "a026_",
|
|
||||||
"registry": [
|
|
||||||
{
|
|
||||||
"Path": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge",
|
|
||||||
"Name": "NoRemove",
|
|
||||||
"Type": "Dword",
|
|
||||||
"Value": "0",
|
|
||||||
"OriginalValue": "1"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"InvokeScript": [
|
|
||||||
"
|
|
||||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
|
||||||
|
|
||||||
takeown /f $File
|
|
||||||
icacls $File /grant \"Administrators:(F)\"
|
|
||||||
|
|
||||||
$FileContent = Get-Content $File
|
|
||||||
$FileContent[7] = $FileContent[7] -replace \"disabled\", \"enabled\"
|
|
||||||
Set-Content $File $FileContent
|
|
||||||
"
|
|
||||||
],
|
|
||||||
"UndoScript": [
|
|
||||||
"
|
|
||||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
|
||||||
|
|
||||||
takeown /f $File
|
|
||||||
icacls $File /grant \"Administrators:(F)\"
|
|
||||||
|
|
||||||
$FileContent = Get-Content $File
|
|
||||||
$FileContent[7] = $FileContent[7] -replace \"enabled\", \"disabled\"
|
|
||||||
Set-Content $File $FileContent
|
|
||||||
"
|
|
||||||
],
|
|
||||||
```
|
|
||||||
|
|
||||||
## Registry Changes
|
|
||||||
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
|
|
||||||
|
|
||||||
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# Remove Microsoft Edge
|
||||||
|
|
||||||
|
# Json File
|
||||||
|
```json
|
||||||
|
"WPFTweaksRemoveEdge": {
|
||||||
|
"Content": "Remove Microsoft Edge",
|
||||||
|
"Description": "Unblocks Microsoft Edge uninstaller restrictions than uses that uninstaller to remove Microsoft Edge",
|
||||||
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
|
"panel": "1",
|
||||||
|
"Order": "a028_",
|
||||||
|
"InvokeScript": [
|
||||||
|
"Invoke-WinUtilRemoveEdge"
|
||||||
|
],
|
||||||
|
"UndoScript": [
|
||||||
|
"
|
||||||
|
Write-Host 'Installing Microsoft Edge...'
|
||||||
|
winget install Microsoft.Edge --source winget
|
||||||
|
"
|
||||||
|
],
|
||||||
|
```
|
||||||
|
# Function
|
||||||
|
```json
|
||||||
|
function Invoke-WinUtilRemoveEdge {
|
||||||
|
Write-Host "Unlocking The Offical Edge Uninstaller And Removing Microsoft Edge..."
|
||||||
|
|
||||||
|
$Path = (Get-ChildItem "C:\Program Files (x86)\Microsoft\Edge\Application\*\Installer\setup.exe")[0].FullName
|
||||||
|
New-Item "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe" -Force
|
||||||
|
Start-Process $Path -ArgumentList '--uninstall --system-level --force-uninstall --delete-profile'
|
||||||
|
}
|
||||||
|
```
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Remove OneDrive
|
||||||
|
```json
|
||||||
|
"WPFTweaksRemoveOneDrive": {
|
||||||
|
"Content": "Remove OneDrive",
|
||||||
|
"Description": "Denys permission to remove onedrive user files than uses its own uninstaller to remove it than brings back permissions",
|
||||||
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
|
"panel": "1",
|
||||||
|
"Order": "a029_",
|
||||||
|
"InvokeScript": [
|
||||||
|
"
|
||||||
|
# Deny permission to remove OneDrive folder
|
||||||
|
icacls $Env:OneDrive /deny \"Administrators:(D,DC)\"
|
||||||
|
|
||||||
|
Write-Host \"Uninstalling OneDrive...\"
|
||||||
|
Start-Process 'C:\\Windows\\System32\\OneDriveSetup.exe' -ArgumentList '/uninstall' -Wait
|
||||||
|
|
||||||
|
# Some of OneDrive files use explorer, and OneDrive uses FileCoAuth
|
||||||
|
Write-Host \"Removing leftover OneDrive Files...\"
|
||||||
|
Stop-Process -Name FileCoAuth,Explorer
|
||||||
|
Remove-Item \"$Env:LocalAppData\\Microsoft\\OneDrive\" -Recurse -Force
|
||||||
|
Remove-Item \"C:\\ProgramData\\Microsoft OneDrive\" -Recurse -Force
|
||||||
|
|
||||||
|
# Grant back permission to accses OneDrive folder
|
||||||
|
icacls $Env:OneDrive /grant \"Administrators:(D,DC)\"
|
||||||
|
"
|
||||||
|
],
|
||||||
|
"UndoScript": [
|
||||||
|
"
|
||||||
|
Write-Host \"Installing OneDrive\"
|
||||||
|
winget install Microsoft.Onedrive --source winget
|
||||||
|
"
|
||||||
|
],
|
||||||
|
```
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
- [Remove Home from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHome.md)
|
- [Remove Home from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHome.md)
|
||||||
- [Make Edge Uninstallable](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/EdgeUninstall.md)
|
- [Make Edge Uninstallable](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/EdgeUninstall.md)
|
||||||
- [Run OO Shutup 10](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md)
|
- [Run OO Shutup 10](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md)
|
||||||
|
- [Remove OneDrive](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveOneDrive.md)
|
||||||
- [Set Classic Right-Click Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu.md)
|
- [Set Classic Right-Click Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu.md)
|
||||||
- [Set Display for Performance](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display.md)
|
- [Set Display for Performance](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display.md)
|
||||||
- [Set Time to UTC (Dual Boot)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md)
|
- [Set Time to UTC (Dual Boot)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ The utility provides three distinct settings for managing Windows updates: Defau
|
|||||||
### Security (Recommended) Settings
|
### Security (Recommended) Settings
|
||||||
- **Description**: This is the recommended setting for all computers.
|
- **Description**: This is the recommended setting for all computers.
|
||||||
- **Update Schedule**:
|
- **Update Schedule**:
|
||||||
- **Feature Updates**: Delays feature updates by 2 years to avoid potential bugs and instability.
|
- **Feature Updates**: Delays feature updates by 365 days to avoid potential bugs and instability.
|
||||||
- **Security Updates**: Installs security updates 4 days after their release to ensure system protection against pressing security flaws.
|
- **Security Updates**: Installs security updates 4 days after their release to ensure system protection against pressing security flaws.
|
||||||
- **Rationale**:
|
- **Rationale**:
|
||||||
- **Feature Updates**: Often introduce new features and bugs; delaying these updates minimizes the risk of system disruptions.
|
- **Feature Updates**: Often introduce new features and bugs; delaying these updates minimizes the risk of system disruptions.
|
||||||
|
|||||||
@@ -54,14 +54,9 @@ public class PowerManagement {
|
|||||||
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
||||||
Write-Host "Index chosen: '$index' from $($sync.MicrowinWindowsFlavors.SelectedValue)"
|
Write-Host "Index chosen: '$index' from $($sync.MicrowinWindowsFlavors.SelectedValue)"
|
||||||
|
|
||||||
$copyToUSB = $sync.WPFMicrowinCopyToUsb.IsChecked
|
|
||||||
$injectDrivers = $sync.MicrowinInjectDrivers.IsChecked
|
$injectDrivers = $sync.MicrowinInjectDrivers.IsChecked
|
||||||
$importDrivers = $sync.MicrowinImportDrivers.IsChecked
|
$importDrivers = $sync.MicrowinImportDrivers.IsChecked
|
||||||
|
|
||||||
$WPBT = $sync.MicroWinWPBT.IsChecked
|
|
||||||
$unsupported = $sync.MicroWinUnsupported.IsChecked
|
|
||||||
$skipFla = $sync.MicroWinNoFLA.IsChecked
|
|
||||||
|
|
||||||
$importVirtIO = $sync.MicrowinCopyVirtIO.IsChecked
|
$importVirtIO = $sync.MicrowinCopyVirtIO.IsChecked
|
||||||
|
|
||||||
$mountDir = $sync.MicrowinMountDir.Text
|
$mountDir = $sync.MicrowinMountDir.Text
|
||||||
@@ -90,8 +85,11 @@ public class PowerManagement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$imgVersion = (Get-WindowsImage -ImagePath $mountDir\sources\install.wim -Index $index).Version
|
$imgVersion = (Get-WindowsImage -ImagePath "$mountDir\sources\install.wim" -Index $index).Version
|
||||||
|
# Windows Setup is the second index in the boot image.
|
||||||
|
$bootVersion = (Get-WindowsImage -ImagePath "$mountDir\sources\boot.wim" -Index 2).Version
|
||||||
Write-Host "The Windows Image Build Version is: $imgVersion"
|
Write-Host "The Windows Image Build Version is: $imgVersion"
|
||||||
|
Write-Host "The WinPE boot image Build Version is: $bootVersion"
|
||||||
|
|
||||||
# Detect image version to avoid performing MicroWin processing on Windows 8 and earlier
|
# Detect image version to avoid performing MicroWin processing on Windows 8 and earlier
|
||||||
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,10240,0))) -eq $false) {
|
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,10240,0))) -eq $false) {
|
||||||
@@ -175,33 +173,31 @@ public class PowerManagement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($WPBT) {
|
Write-Host "Disabling WPBT Execution"
|
||||||
Write-Host "Disabling WPBT Execution"
|
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM"
|
||||||
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM"
|
reg add "HKLM\zSYSTEM\ControlSet001\Control\Session Manager" /v DisableWpbtExecution /t REG_DWORD /d 1 /f
|
||||||
reg add "HKLM\zSYSTEM\ControlSet001\Control\Session Manager" /v DisableWpbtExecution /t REG_DWORD /d 1 /f
|
reg unload HKLM\zSYSTEM
|
||||||
reg unload HKLM\zSYSTEM
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($skipFla) {
|
Write-Host "Skipping first logon animation..."
|
||||||
Write-Host "Skipping first logon animation..."
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
||||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f
|
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f /ve /t REG_SZ /d "Stop First Logon Animation Process"
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /ve /t REG_SZ /d "Stop First Logon Animation Process" /f
|
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f /v StubPath /t REG_EXPAND_SZ /d '\"%WINDIR%\System32\cmd.exe\" /C \"taskkill /f /im firstlogonanim.exe\"'
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /v StubPath /t REG_EXPAND_SZ /d '""%WINDIR%\System32\cmd.exe"" /C ""taskkill /f /im firstlogonanim.exe""' /f
|
reg unload HKLM\zSOFTWARE
|
||||||
reg unload HKLM\zSOFTWARE
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($unsupported) {
|
# We have to prepare the target system to accept the diagnostics script
|
||||||
Write-Host "Bypassing system requirements (locally)"
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
||||||
reg add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
reg add "HKLM\zSOFTWARE\WinUtil" /f
|
||||||
reg add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
reg add "HKLM\zSOFTWARE\WinUtil" /f /v "ToolboxVersion" /t REG_SZ /d "$($sync.version)"
|
||||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassCPUCheck" /t REG_DWORD /d 1 /f
|
reg add "HKLM\zSOFTWARE\WinUtil" /f /v "MicroWinBuildDate" /t REG_SZ /d "$((Get-Date).ToString('yyMMdd-HHmm'))"
|
||||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassRAMCheck" /t REG_DWORD /d 1 /f
|
|
||||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f
|
# REAL software developers set execution policies to unrestricted but, because we're targeting
|
||||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassStorageCheck" /t REG_DWORD /d 1 /f
|
# mainstream population, we have to lower the level of "riskiness" -- set remotesigned; at least that
|
||||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
|
# lets us run PWSH scripts that WE create. Execution policies don't really make sense anyway if common sense
|
||||||
reg add "HKLM\SYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
# is lacking.
|
||||||
}
|
reg add "HKLM\zSOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /v "ExecutionPolicy" /t REG_SZ /d "RemoteSigned" /f
|
||||||
|
|
||||||
|
reg unload HKLM\zSOFTWARE
|
||||||
|
|
||||||
if ($importVirtIO) {
|
if ($importVirtIO) {
|
||||||
Write-Host "Copying VirtIO drivers..."
|
Write-Host "Copying VirtIO drivers..."
|
||||||
@@ -217,7 +213,10 @@ public class PowerManagement {
|
|||||||
Microwin-RemoveProvisionedPackages -UseCmdlets $true
|
Microwin-RemoveProvisionedPackages -UseCmdlets $true
|
||||||
|
|
||||||
# Detect Windows 11 24H2 and add dependency to FileExp to prevent Explorer look from going back - thanks @WitherOrNot and @thecatontheceiling
|
# Detect Windows 11 24H2 and add dependency to FileExp to prevent Explorer look from going back - thanks @WitherOrNot and @thecatontheceiling
|
||||||
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,26100,1))) -eq $true) {
|
# ----- UPDATE UPDATE UPDATE: they fixed this in 10.0.26100.7019. DO NOT DO THIS OTHERWISE IT BREAKS EXPLORER AGAIN BECAUSE THE CHEEKY LITTLE
|
||||||
|
# ----- PoS CHANGED APPRUNTIME.CBS TO APPRUNTIME.CBS.1.6. Thing is, we don't need to patch this in those builds because it no longer breaks
|
||||||
|
# ----- when you don't patch.
|
||||||
|
if (((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,26100,1))) -eq $true) -and ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,26100,7019))) -eq $false)) {
|
||||||
try {
|
try {
|
||||||
if (Test-Path "$scratchDir\Windows\SystemApps\MicrosoftWindows.Client.FileExp_cw5n1h2txyewy\appxmanifest.xml" -PathType Leaf) {
|
if (Test-Path "$scratchDir\Windows\SystemApps\MicrosoftWindows.Client.FileExp_cw5n1h2txyewy\appxmanifest.xml" -PathType Leaf) {
|
||||||
# Found the culprit. Do the following:
|
# Found the culprit. Do the following:
|
||||||
@@ -302,11 +301,6 @@ public class PowerManagement {
|
|||||||
Copy-Item "$env:temp\FirstStartup.ps1" "$($scratchDir)\Windows\FirstStartup.ps1" -force
|
Copy-Item "$env:temp\FirstStartup.ps1" "$($scratchDir)\Windows\FirstStartup.ps1" -force
|
||||||
Write-Host "Done copy FirstRun.ps1"
|
Write-Host "Done copy FirstRun.ps1"
|
||||||
|
|
||||||
Write-Host "Copy link to winutil.ps1 into the ISO"
|
|
||||||
$desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop"
|
|
||||||
New-Item -ItemType Directory -Force -Path "$desktopDir"
|
|
||||||
dism /English /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default"
|
|
||||||
|
|
||||||
Write-Host "Copy checkinstall.cmd into the ISO"
|
Write-Host "Copy checkinstall.cmd into the ISO"
|
||||||
Microwin-NewCheckInstall
|
Microwin-NewCheckInstall
|
||||||
Copy-Item "$env:temp\checkinstall.cmd" "$($scratchDir)\Windows\checkinstall.cmd" -force
|
Copy-Item "$env:temp\checkinstall.cmd" "$($scratchDir)\Windows\checkinstall.cmd" -force
|
||||||
@@ -316,7 +310,6 @@ public class PowerManagement {
|
|||||||
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\System32\OOBE\BYPASSNRO"
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\System32\OOBE\BYPASSNRO"
|
||||||
|
|
||||||
Write-Host "Loading registry"
|
Write-Host "Loading registry"
|
||||||
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS"
|
|
||||||
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default"
|
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default"
|
||||||
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat"
|
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat"
|
||||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
||||||
@@ -375,9 +368,8 @@ public class PowerManagement {
|
|||||||
Write-Host "Disabling Reserved Storage"
|
Write-Host "Disabling Reserved Storage"
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager" /v "ShippedWithReserves" /t REG_DWORD /d 0 /f
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager" /v "ShippedWithReserves" /t REG_DWORD /d 0 /f
|
||||||
|
|
||||||
Write-Host "Changing theme to dark. This only works on Activated Windows"
|
Write-Host "Showing file extensions..."
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "AppsUseLightTheme" /t REG_DWORD /d 0 /f
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
|
||||||
|
|
||||||
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,21996,1))) -eq $false) {
|
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,21996,1))) -eq $false) {
|
||||||
# We're dealing with Windows 10. Configure sane desktop settings. NOTE: even though stuff to disable News and Interests is there,
|
# We're dealing with Windows 10. Configure sane desktop settings. NOTE: even though stuff to disable News and Interests is there,
|
||||||
@@ -397,7 +389,6 @@ public class PowerManagement {
|
|||||||
Write-Error "An unexpected error occurred: $_"
|
Write-Error "An unexpected error occurred: $_"
|
||||||
} finally {
|
} finally {
|
||||||
Write-Host "Unmounting Registry..."
|
Write-Host "Unmounting Registry..."
|
||||||
reg unload HKLM\zCOMPONENTS
|
|
||||||
reg unload HKLM\zDEFAULT
|
reg unload HKLM\zDEFAULT
|
||||||
reg unload HKLM\zNTUSER
|
reg unload HKLM\zNTUSER
|
||||||
reg unload HKLM\zSOFTWARE
|
reg unload HKLM\zSOFTWARE
|
||||||
@@ -406,9 +397,45 @@ public class PowerManagement {
|
|||||||
Write-Host "Cleaning up image..."
|
Write-Host "Cleaning up image..."
|
||||||
dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase
|
dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase
|
||||||
Write-Host "Cleanup complete."
|
Write-Host "Cleanup complete."
|
||||||
|
$committed = $false
|
||||||
|
$unmounted = $false
|
||||||
|
|
||||||
|
Write-Host "Saving image..."
|
||||||
|
|
||||||
|
try {
|
||||||
|
Save-WindowsImage -Path "$scratchDir"
|
||||||
|
$committed = $true
|
||||||
|
} catch {
|
||||||
|
do {
|
||||||
|
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||||
|
try {
|
||||||
|
Save-WindowsImage -Path "$scratchDir"
|
||||||
|
$committed = $true
|
||||||
|
} catch {
|
||||||
|
Write-Host "Commit operation unsuccessful. Trying again after 3 seconds..."
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
|
}
|
||||||
|
} until ($committed)
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host "Unmounting image..."
|
Write-Host "Unmounting image..."
|
||||||
Dismount-WindowsImage -Path "$scratchDir" -Save
|
|
||||||
|
try {
|
||||||
|
# because we've already saved the changes earlier, we can safely discard
|
||||||
|
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||||
|
$unmounted = $true
|
||||||
|
} catch {
|
||||||
|
do {
|
||||||
|
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||||
|
try {
|
||||||
|
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||||
|
$unmounted = $true
|
||||||
|
} catch {
|
||||||
|
Write-Host "Unmount operation unsuccessful. Trying again after 3 seconds..."
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
|
}
|
||||||
|
} until ($unmounted)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -433,20 +460,6 @@ public class PowerManagement {
|
|||||||
}
|
}
|
||||||
Write-Host "Windows image completed. Continuing with boot.wim."
|
Write-Host "Windows image completed. Continuing with boot.wim."
|
||||||
|
|
||||||
$esd = $sync.MicroWinESD.IsChecked
|
|
||||||
if ($esd) {
|
|
||||||
Write-Host "Converting install image to ESD."
|
|
||||||
try {
|
|
||||||
Export-WindowsImage -SourceImagePath "$mountDir\sources\install.wim" -SourceIndex $index -DestinationImagePath "$mountDir\sources\install.esd" -CompressionType "Recovery"
|
|
||||||
Remove-Item "$mountDir\sources\install.wim"
|
|
||||||
Write-Host "Converted install image to ESD."
|
|
||||||
} catch {
|
|
||||||
Start-Process -FilePath "$env:SystemRoot\System32\dism.exe" -ArgumentList "/export-image /sourceimagefile:`"$mountDir\sources\install.wim`" /sourceindex:1 /destinationimagefile:`"$mountDir\sources\install.esd`" /compress:recovery" -Wait -NoNewWindow
|
|
||||||
Remove-Item "$mountDir\sources\install.wim"
|
|
||||||
Write-Host "Converted install image to ESD."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Next step boot image
|
# Next step boot image
|
||||||
Write-Host "Mounting boot image $mountDir\sources\boot.wim into $scratchDir"
|
Write-Host "Mounting boot image $mountDir\sources\boot.wim into $scratchDir"
|
||||||
Mount-WindowsImage -ImagePath "$mountDir\sources\boot.wim" -Index 2 -Path "$scratchDir"
|
Mount-WindowsImage -ImagePath "$mountDir\sources\boot.wim" -Index 2 -Path "$scratchDir"
|
||||||
@@ -462,7 +475,6 @@ public class PowerManagement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "Loading registry..."
|
Write-Host "Loading registry..."
|
||||||
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS" >$null
|
|
||||||
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default" >$null
|
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default" >$null
|
||||||
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat" >$null
|
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat" >$null
|
||||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE" >$null
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE" >$null
|
||||||
@@ -480,27 +492,86 @@ public class PowerManagement {
|
|||||||
reg add "HKLM\zSYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
reg add "HKLM\zSYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
||||||
# Fix Computer Restarted Unexpectedly Error on New Bare Metal Install
|
# Fix Computer Restarted Unexpectedly Error on New Bare Metal Install
|
||||||
reg add "HKLM\zSYSTEM\Setup\Status\ChildCompletion" /v "setup.exe" /t REG_DWORD /d 3 /f
|
reg add "HKLM\zSYSTEM\Setup\Status\ChildCompletion" /v "setup.exe" /t REG_DWORD /d 3 /f
|
||||||
|
|
||||||
|
# Force old Setup on 24H2+ WinPE images due to personal preference; it's simply faster and
|
||||||
|
# more reliable than MoSetup. I simply can't stand that new setup system.
|
||||||
|
if ((Microwin-TestCompatibleImage $bootVersion $([System.Version]::new(10,0,26040,0))) -and (Test-Path -Path "$scratchDir\sources\setup.exe" -PathType Leaf)) {
|
||||||
|
reg add "HKLM\zSYSTEM\Setup" /f /v "CmdLine" /t REG_SZ /d "\sources\setup.exe"
|
||||||
|
}
|
||||||
} catch {
|
} catch {
|
||||||
Write-Error "An unexpected error occurred: $_"
|
Write-Error "An unexpected error occurred: $_"
|
||||||
} finally {
|
} finally {
|
||||||
Write-Host "Unmounting Registry..."
|
Write-Host "Unmounting Registry..."
|
||||||
reg unload HKLM\zCOMPONENTS
|
|
||||||
reg unload HKLM\zDEFAULT
|
reg unload HKLM\zDEFAULT
|
||||||
reg unload HKLM\zNTUSER
|
reg unload HKLM\zNTUSER
|
||||||
reg unload HKLM\zSOFTWARE
|
reg unload HKLM\zSOFTWARE
|
||||||
reg unload HKLM\zSYSTEM
|
reg unload HKLM\zSYSTEM
|
||||||
|
|
||||||
|
$committed = $false
|
||||||
|
$unmounted = $false
|
||||||
|
|
||||||
|
Write-Host "Saving image..."
|
||||||
|
|
||||||
|
try {
|
||||||
|
Save-WindowsImage -Path "$scratchDir"
|
||||||
|
$committed = $true
|
||||||
|
} catch {
|
||||||
|
do {
|
||||||
|
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||||
|
try {
|
||||||
|
Save-WindowsImage -Path "$scratchDir"
|
||||||
|
$committed = $true
|
||||||
|
} catch {
|
||||||
|
Write-Host "Commit operation unsuccessful. Trying again after 3 seconds..."
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
|
}
|
||||||
|
} until ($committed)
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host "Unmounting image..."
|
Write-Host "Unmounting image..."
|
||||||
Dismount-WindowsImage -Path "$scratchDir" -Save
|
|
||||||
|
try {
|
||||||
|
# because we've already saved the changes earlier, we can safely discard
|
||||||
|
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||||
|
$unmounted = $true
|
||||||
|
} catch {
|
||||||
|
do {
|
||||||
|
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||||
|
try {
|
||||||
|
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||||
|
$unmounted = $true
|
||||||
|
} catch {
|
||||||
|
Write-Host "Unmount operation unsuccessful. Trying again after 3 seconds..."
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
|
}
|
||||||
|
} until ($unmounted)
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host "Creating ISO image"
|
Write-Host "Creating ISO image"
|
||||||
|
|
||||||
|
$peToolsPath = ""
|
||||||
|
|
||||||
|
$adkKitsRoot = Microwin-GetKitsRoot -wow64environment $false
|
||||||
|
$adkKitsRoot_WOW64Environ = Microwin-GetKitsRoot -wow64environment $true
|
||||||
|
|
||||||
|
$expectedADKPath = "$($adkKitsRoot)Assessment and Deployment Kit"
|
||||||
|
$expectedADKPath_WOW64Environ = "$($adkKitsRoot_WOW64Environ)Assessment and Deployment Kit"
|
||||||
|
|
||||||
# if we downloaded oscdimg from github it will be in the temp directory so use it
|
# if we downloaded oscdimg from github it will be in the temp directory so use it
|
||||||
# if it is not in temp it is part of ADK and is in global PATH so just set it to oscdimg.exe
|
# if it is not in temp it is part of ADK and is in global PATH so just set it to oscdimg.exe
|
||||||
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
||||||
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
$oscdImgFound = Test-Path -Path "$oscdimgPath" -PathType Leaf
|
||||||
if (!$oscdImgFound) {
|
if ((-not ($oscdImgFound)) -and ((Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") -eq $true)) {
|
||||||
$oscdimgPath = "oscdimg.exe"
|
if ($expectedADKPath -ne "Assessment and Deployment Kit") { $peToolsPath = $expectedADKPath }
|
||||||
|
if (($peToolsPath -eq "") -and ($expectedADKPath_WOW64Environ -ne "Assessment and Deployment Kit")) { $peToolsPath = $expectedADKPath_WOW64Environ }
|
||||||
|
|
||||||
|
Write-Host "Using $peToolsPath as the Preinstallation Environment tools path..."
|
||||||
|
# Paths change depending on platform
|
||||||
|
if ([Environment]::Is64BitOperatingSystem) {
|
||||||
|
$oscdimgPath = "$peToolsPath\Deployment Tools\amd64\Oscdimg\oscdimg.exe"
|
||||||
|
} else {
|
||||||
|
$oscdimgPath = "$peToolsPath\Deployment Tools\x86\Oscdimg\oscdimg.exe"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "[INFO] Using oscdimg.exe from: $oscdimgPath"
|
Write-Host "[INFO] Using oscdimg.exe from: $oscdimgPath"
|
||||||
@@ -511,12 +582,6 @@ public class PowerManagement {
|
|||||||
|
|
||||||
Write-Host "OSCDIMG Error Level : $($oscdimgProc.ExitCode)"
|
Write-Host "OSCDIMG Error Level : $($oscdimgProc.ExitCode)"
|
||||||
|
|
||||||
if ($copyToUSB) {
|
|
||||||
Write-Host "Copying target ISO to the USB drive"
|
|
||||||
Microwin-CopyToUSB("$($SaveDialog.FileName)")
|
|
||||||
if ($?) { Write-Host "Done Copying target ISO to USB drive!" } else { Write-Host "ISO copy failed." }
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host " _____ "
|
Write-Host " _____ "
|
||||||
Write-Host "(____ \ "
|
Write-Host "(____ \ "
|
||||||
Write-Host " _ \ \ ___ ____ ____ "
|
Write-Host " _ \ \ ___ ____ ____ "
|
||||||
|
|||||||
@@ -122,46 +122,60 @@ function Invoke-MicrowinGetIso {
|
|||||||
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
||||||
Invoke-MicrowinBusyInfo -action "wip" -message "Checking system requirements..." -interactive $false
|
Invoke-MicrowinBusyInfo -action "wip" -message "Checking system requirements..." -interactive $false
|
||||||
|
|
||||||
|
$adkKitsRoot = Microwin-GetKitsRoot -wow64environment $false
|
||||||
|
$adkKitsRoot_WOW64Environ = Microwin-GetKitsRoot -wow64environment $true
|
||||||
|
|
||||||
|
$expectedADKPath = "$($adkKitsRoot)Assessment and Deployment Kit"
|
||||||
|
$expectedADKPath_WOW64Environ = "$($adkKitsRoot_WOW64Environ)Assessment and Deployment Kit"
|
||||||
|
|
||||||
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
||||||
$oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) -or (Test-Path $oscdimgPath -PathType Leaf)
|
$oscdImgFound = [bool] (Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") -or (Test-Path $oscdimgPath -PathType Leaf)
|
||||||
Write-Host "oscdimg.exe on system: $oscdImgFound"
|
Write-Host "oscdimg.exe on system: $oscdImgFound"
|
||||||
|
|
||||||
if (!$oscdImgFound) {
|
if (-not ($oscdImgFound)) {
|
||||||
$downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked
|
# First we try to grab it from github, if not, run the ADK installer.
|
||||||
|
if ((Microwin-GetOscdimg -oscdimgPath $oscdimgPath) -eq $true) {
|
||||||
if (!$downloadFromGitHub) {
|
Write-Host "OSCDIMG download succeeded."
|
||||||
# only show the message to people who did check the box to download from github, if you check the box
|
|
||||||
# you consent to downloading it, no need to show extra dialogs
|
|
||||||
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.")
|
|
||||||
# the step below needs choco to download oscdimg
|
|
||||||
# Install Choco if not already present
|
|
||||||
Install-WinUtilChoco
|
|
||||||
$chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco)
|
|
||||||
Write-Host "choco on system: $chocoFound"
|
|
||||||
if (!$chocoFound) {
|
|
||||||
[System.Windows.MessageBox]::Show("choco.exe is not found on the system, you need choco to download oscdimg.exe")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install windows-adk-oscdimg"
|
|
||||||
$msg = "oscdimg is installed, now close, reopen PowerShell terminal and re-launch winutil.ps1"
|
|
||||||
Invoke-MicrowinBusyInfo -action "done" -message $msg # We set it to done because it immediately returns from this function
|
|
||||||
[System.Windows.MessageBox]::Show($msg)
|
|
||||||
return
|
|
||||||
} else {
|
} else {
|
||||||
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.")
|
Write-Host "OSCDIMG could not be downloaded from GitHub. Downloading deployment tools..."
|
||||||
Invoke-MicrowinBusyInfo -action "wip" -message "Downloading oscdimg.exe..." -interactive $false
|
if (-not (Microwin-GetAdkDeploymentTools)) {
|
||||||
Microwin-GetOscdimg -oscdimgPath $oscdimgPath
|
Invoke-MicrowinBusyInfo -action "warning" -message "Neither OSCDIMG nor ADK could be downloaded."
|
||||||
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
Write-Host "Neither OSCDIMG nor ADK could be downloaded."
|
||||||
if (!$oscdImgFound) {
|
|
||||||
$msg = "oscdimg was not downloaded can not proceed"
|
|
||||||
Invoke-MicrowinBusyInfo -action "warning" -message $msg
|
|
||||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
Write-Host "oscdimg.exe was successfully downloaded from github"
|
$msg = "ADK/OSCDIMG is installed, now restart this process."
|
||||||
|
Invoke-MicrowinBusyInfo -action "done" -message $msg # We set it to done because it immediately returns from this function
|
||||||
|
[System.Windows.MessageBox]::Show($msg)
|
||||||
|
Remove-Item -Path "$env:TEMP\adksetup.exe" -Force -ErrorAction SilentlyContinue
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} elseif (Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") {
|
||||||
|
# We have to guess where oscdimg is. We'll check both values...
|
||||||
|
$peToolsPath = ""
|
||||||
|
|
||||||
|
if ($expectedADKPath -ne "Assessment and Deployment Kit") { $peToolsPath = $expectedADKPath }
|
||||||
|
if (($peToolsPath -eq "") -and ($expectedADKPath_WOW64Environ -ne "Assessment and Deployment Kit")) { $peToolsPath = $expectedADKPath_WOW64Environ }
|
||||||
|
|
||||||
|
Write-Host "Using $peToolsPath as the Preinstallation Environment tools path..."
|
||||||
|
# Paths change depending on platform
|
||||||
|
if ([Environment]::Is64BitOperatingSystem) {
|
||||||
|
$oscdimgPath = "$peToolsPath\Deployment Tools\amd64\Oscdimg\oscdimg.exe"
|
||||||
|
} else {
|
||||||
|
$oscdimgPath = "$peToolsPath\Deployment Tools\x86\Oscdimg\oscdimg.exe"
|
||||||
|
}
|
||||||
|
|
||||||
|
# If it's a non-existent file, we won't continue.
|
||||||
|
if (-not (Test-Path -Path "$oscdimgPath" -PathType Leaf)) {
|
||||||
|
$oscdimgFound = $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$oscdImgFound = [bool] (Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") -or (Test-Path $oscdimgPath -PathType Leaf)
|
||||||
|
|
||||||
|
if (-not ($oscdimgFound)) {
|
||||||
|
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system. Cannot continue.")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
Invoke-MicrowinBusyInfo -action "wip" -message "Checking disk space..." -interactive $false
|
Invoke-MicrowinBusyInfo -action "wip" -message "Checking disk space..." -interactive $false
|
||||||
@@ -209,23 +223,6 @@ function Invoke-MicrowinGetIso {
|
|||||||
# there is probably a better way of doing this, I don't have time to figure this out
|
# there is probably a better way of doing this, I don't have time to figure this out
|
||||||
$sync.MicrowinIsoDrive.Text = $driveLetter
|
$sync.MicrowinIsoDrive.Text = $driveLetter
|
||||||
|
|
||||||
$mountedISOPath = (Split-Path -Path "$filePath")
|
|
||||||
if ($sync.MicrowinScratchDirBox.Text.Trim() -eq "Scratch") {
|
|
||||||
$sync.MicrowinScratchDirBox.Text =""
|
|
||||||
}
|
|
||||||
|
|
||||||
$UseISOScratchDir = $sync.WPFMicrowinISOScratchDir.IsChecked
|
|
||||||
|
|
||||||
if ($UseISOScratchDir) {
|
|
||||||
$sync.MicrowinScratchDirBox.Text=$mountedISOPath
|
|
||||||
}
|
|
||||||
|
|
||||||
if( -Not $sync.MicrowinScratchDirBox.Text.EndsWith('\') -And $sync.MicrowinScratchDirBox.Text.Length -gt 1) {
|
|
||||||
|
|
||||||
$sync.MicrowinScratchDirBox.Text = Join-Path $sync.MicrowinScratchDirBox.Text.Trim() '\'
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Detect if the folders already exist and remove them
|
# Detect if the folders already exist and remove them
|
||||||
if (($sync.MicrowinMountDir.Text -ne "") -and (Test-Path -Path $sync.MicrowinMountDir.Text)) {
|
if (($sync.MicrowinMountDir.Text -ne "") -and (Test-Path -Path $sync.MicrowinMountDir.Text)) {
|
||||||
try {
|
try {
|
||||||
@@ -244,13 +241,8 @@ function Invoke-MicrowinGetIso {
|
|||||||
$randomMicrowinScratch = "MicrowinScratch_${timestamp}_${randomNumber}"
|
$randomMicrowinScratch = "MicrowinScratch_${timestamp}_${randomNumber}"
|
||||||
$sync.BusyText.Text=" - Mounting"
|
$sync.BusyText.Text=" - Mounting"
|
||||||
Write-Host "Mounting Iso. Please wait."
|
Write-Host "Mounting Iso. Please wait."
|
||||||
if ($sync.MicrowinScratchDirBox.Text -eq "") {
|
$mountDir = Join-Path $env:TEMP $randomMicrowin
|
||||||
$mountDir = Join-Path $env:TEMP $randomMicrowin
|
$scratchDir = Join-Path $env:TEMP $randomMicrowinScratch
|
||||||
$scratchDir = Join-Path $env:TEMP $randomMicrowinScratch
|
|
||||||
} else {
|
|
||||||
$scratchDir = $sync.MicrowinScratchDirBox.Text+"Scratch"
|
|
||||||
$mountDir = $sync.MicrowinScratchDirBox.Text+"micro"
|
|
||||||
}
|
|
||||||
|
|
||||||
$sync.MicrowinMountDir.Text = $mountDir
|
$sync.MicrowinMountDir.Text = $mountDir
|
||||||
$sync.MicrowinScratchDir.Text = $scratchDir
|
$sync.MicrowinScratchDir.Text = $scratchDir
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
function Microwin-CopyToUSB([string]$fileToCopy) {
|
|
||||||
foreach ($volume in Get-Volume) {
|
|
||||||
if ($volume -and $volume.FileSystemLabel -ieq "ventoy") {
|
|
||||||
$destinationPath = "$($volume.DriveLetter):\"
|
|
||||||
#Copy-Item -Path $fileToCopy -Destination $destinationPath -Force
|
|
||||||
# Get the total size of the file
|
|
||||||
$totalSize = (Get-Item "$fileToCopy").length
|
|
||||||
|
|
||||||
Copy-Item -Path "$fileToCopy" -Destination "$destinationPath" -Verbose -Force -Recurse -Container -PassThru |
|
|
||||||
ForEach-Object {
|
|
||||||
# Calculate the percentage completed
|
|
||||||
$completed = ($_.BytesTransferred / $totalSize) * 100
|
|
||||||
|
|
||||||
# Display the progress bar
|
|
||||||
Write-Progress -Activity "Copying File" -Status "Progress" -PercentComplete $completed -CurrentOperation ("{0:N2} MB / {1:N2} MB" -f ($_.BytesTransferred / 1MB), ($totalSize / 1MB))
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "File copied to Ventoy drive $($volume.DriveLetter)"
|
|
||||||
|
|
||||||
# Detect if config files are present, move them if they are, and configure the Ventoy drive to not bypass the requirements
|
|
||||||
$customVentoyConfig = @'
|
|
||||||
{
|
|
||||||
"control":[
|
|
||||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
|
||||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
|
||||||
],
|
|
||||||
"control_legacy":[
|
|
||||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
|
||||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
|
||||||
],
|
|
||||||
"control_uefi":[
|
|
||||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
|
||||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
|
||||||
],
|
|
||||||
"control_ia32":[
|
|
||||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
|
||||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
|
||||||
],
|
|
||||||
"control_aa64":[
|
|
||||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
|
||||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
|
||||||
],
|
|
||||||
"control_mips":[
|
|
||||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
|
||||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
'@
|
|
||||||
|
|
||||||
try {
|
|
||||||
Write-Host "Writing custom Ventoy configuration. Please wait..."
|
|
||||||
if (Test-Path -Path "$($volume.DriveLetter):\ventoy\ventoy.json" -PathType Leaf) {
|
|
||||||
Write-Host "A Ventoy configuration file exists. Moving it..."
|
|
||||||
Move-Item -Path "$($volume.DriveLetter):\ventoy\ventoy.json" -Destination "$($volume.DriveLetter):\ventoy\ventoy.json.old" -Force
|
|
||||||
Write-Host "Existing Ventoy configuration has been moved to `"ventoy.json.old`". Feel free to put your config back into the `"ventoy.json`" file."
|
|
||||||
}
|
|
||||||
if (-not (Test-Path -Path "$($volume.DriveLetter):\ventoy")) {
|
|
||||||
New-Item -Path "$($volume.DriveLetter):\ventoy" -ItemType Directory -Force | Out-Null
|
|
||||||
}
|
|
||||||
$customVentoyConfig | Out-File -FilePath "$($volume.DriveLetter):\ventoy\ventoy.json" -Encoding utf8 -Force
|
|
||||||
Write-Host "The Ventoy drive has been successfully configured."
|
|
||||||
} catch {
|
|
||||||
Write-Host "Could not configure Ventoy drive. Error: $($_.Exception.Message)`n"
|
|
||||||
Write-Host "Be sure to add the following configuration to the Ventoy drive by either creating a `"ventoy.json`" file in the `"ventoy`" directory (create it if it doesn't exist) or by editing an existing one: `n`n$customVentoyConfig`n"
|
|
||||||
Write-Host "Failure to do this will cause conflicts with your target ISO file."
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Write-Host "Ventoy USB Key is not inserted"
|
|
||||||
}
|
|
||||||
25
functions/microwin/Microwin-GetAdkDeploymentTools.ps1
Normal file
25
functions/microwin/Microwin-GetAdkDeploymentTools.ps1
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
function Microwin-GetAdkDeploymentTools {
|
||||||
|
<#
|
||||||
|
.DESCRIPTION
|
||||||
|
This function will download the deployment tools from Microsoft
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Microwin-GetAdkDeploymentTools
|
||||||
|
#>
|
||||||
|
|
||||||
|
# ADK 10.1.28000.1 download link is the same; no need to guess it
|
||||||
|
$adkDownloadLink = "https://download.microsoft.com/download/615540bc-be0b-433a-b91b-1f2b0642bb24/adk/adksetup.exe"
|
||||||
|
$adkVersion = "10.1.28000.1"
|
||||||
|
Write-Host "Downloading ADK version $adkVersion ..."
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri "$adkDownloadLink" -OutFile "$env:TEMP\adksetup.exe"
|
||||||
|
|
||||||
|
if ((-not ($?)) -or (-not (Test-Path -Path "$env:TEMP\adksetup.exe" -PathType Leaf))) {
|
||||||
|
Write-Host "ADK could not be downloaded."
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Installing ADK version $adkVersion -- This may take a few minutes..."
|
||||||
|
Start-Process -FilePath "$env:TEMP\adksetup.exe" -ArgumentList "/features OptionId.DeploymentTools /q /ceip off" -Wait
|
||||||
|
|
||||||
|
return $?
|
||||||
|
}
|
||||||
40
functions/microwin/Microwin-GetKitsRoot.ps1
Normal file
40
functions/microwin/Microwin-GetKitsRoot.ps1
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
function Microwin-GetKitsRoot {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Gets the kits root path for the Windows Assessment and Deployment Kit (ADK)
|
||||||
|
.PARAMETER wow64environment
|
||||||
|
Determines whether to search in a WOW64 compatibility environment (HKLM\SOFTWARE\WOW6432Node)
|
||||||
|
.OUTPUTS
|
||||||
|
The path to the kits root
|
||||||
|
#>
|
||||||
|
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory = $true, Position = 0)] [bool]$wow64environment
|
||||||
|
)
|
||||||
|
|
||||||
|
$adk10KitsRoot = ""
|
||||||
|
|
||||||
|
# if we set the wow64 bit on and we're on a 32-bit system, then we prematurely return the value
|
||||||
|
if (($wow64environment -eq $true) -and (-not [Environment]::Is64BitOperatingSystem)) {
|
||||||
|
return $adk10KitsRoot
|
||||||
|
}
|
||||||
|
|
||||||
|
$regPath = ""
|
||||||
|
if ($wow64environment) {
|
||||||
|
$regPath = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows Kits\Installed Roots"
|
||||||
|
} else {
|
||||||
|
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((Test-Path "$regPath") -eq $false) {
|
||||||
|
return $adk10KitsRoot
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$adk10KitsRoot = Get-ItemPropertyValue -Path $regPath -Name "KitsRoot10" -ErrorAction Stop
|
||||||
|
} catch {
|
||||||
|
Write-Debug "Could not find ADK."
|
||||||
|
}
|
||||||
|
|
||||||
|
return $adk10KitsRoot
|
||||||
|
}
|
||||||
@@ -15,6 +15,10 @@ function Microwin-GetOscdimg {
|
|||||||
$oscdimgPath = "$env:TEMP\oscdimg.exe"
|
$oscdimgPath = "$env:TEMP\oscdimg.exe"
|
||||||
$downloadUrl = "https://github.com/ChrisTitusTech/winutil/raw/main/releases/oscdimg.exe"
|
$downloadUrl = "https://github.com/ChrisTitusTech/winutil/raw/main/releases/oscdimg.exe"
|
||||||
Invoke-RestMethod -Uri $downloadUrl -OutFile $oscdimgPath
|
Invoke-RestMethod -Uri $downloadUrl -OutFile $oscdimgPath
|
||||||
|
if (-not (Test-Path "$oscdimgPath" -PathType Leaf)) {
|
||||||
|
Write-Host "OSCDIMG could not be downloaded."
|
||||||
|
return $false
|
||||||
|
}
|
||||||
$hashResult = Get-FileHash -Path $oscdimgPath -Algorithm SHA256
|
$hashResult = Get-FileHash -Path $oscdimgPath -Algorithm SHA256
|
||||||
$sha256Hash = $hashResult.Hash
|
$sha256Hash = $hashResult.Hash
|
||||||
|
|
||||||
@@ -23,7 +27,9 @@ function Microwin-GetOscdimg {
|
|||||||
$expectedHash = "AB9E161049D293B544961BFDF2D61244ADE79376D6423DF4F60BF9B147D3C78D" # Replace with the actual expected hash
|
$expectedHash = "AB9E161049D293B544961BFDF2D61244ADE79376D6423DF4F60BF9B147D3C78D" # Replace with the actual expected hash
|
||||||
if ($sha256Hash -eq $expectedHash) {
|
if ($sha256Hash -eq $expectedHash) {
|
||||||
Write-Host "Hashes match. File is verified."
|
Write-Host "Hashes match. File is verified."
|
||||||
|
return $true
|
||||||
} else {
|
} else {
|
||||||
Write-Host "Hashes do not match. File may be corrupted or tampered with."
|
Write-Host "Hashes do not match. File may be corrupted or tampered with."
|
||||||
|
return $false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,6 +103,35 @@ function Microwin-NewFirstRun {
|
|||||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Start" /v ShowRecentList /t REG_DWORD /d 0 /f
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Start" /v ShowRecentList /t REG_DWORD /d 0 /f
|
||||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_TrackDocs /t REG_DWORD /d 0 /f
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_TrackDocs /t REG_DWORD /d 0 /f
|
||||||
|
|
||||||
|
# Color Modes -- requires sending messages to apply to everything
|
||||||
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "AppsUseLightTheme" /t REG_DWORD /d 0 /f
|
||||||
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
||||||
|
|
||||||
|
# Send the WM_SETTINGCHANGE message to all windows
|
||||||
|
Add-Type -TypeDefinition @"
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
public class Win32 {
|
||||||
|
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
|
||||||
|
public static extern IntPtr SendMessageTimeout(
|
||||||
|
IntPtr hWnd,
|
||||||
|
uint Msg,
|
||||||
|
IntPtr wParam,
|
||||||
|
string lParam,
|
||||||
|
uint fuFlags,
|
||||||
|
uint uTimeout,
|
||||||
|
out IntPtr lpdwResult);
|
||||||
|
}
|
||||||
|
"@
|
||||||
|
|
||||||
|
$HWND_BROADCAST = [IntPtr]0xffff
|
||||||
|
$WM_SETTINGCHANGE = 0x1A
|
||||||
|
$SMTO_ABORTIFHUNG = 0x2
|
||||||
|
$timeout = 100
|
||||||
|
|
||||||
|
# Send the broadcast message to all windows
|
||||||
|
[Win32]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE, [IntPtr]::Zero, "ImmersiveColorSet", $SMTO_ABORTIFHUNG, $timeout, [ref]([IntPtr]::Zero))
|
||||||
|
|
||||||
Clear-Host
|
Clear-Host
|
||||||
Write-Host "The taskbar will take around a minute to show up, but you can start using your computer now. Try pressing the Windows key to open the Start menu, or Windows + E to launch File Explorer."
|
Write-Host "The taskbar will take around a minute to show up, but you can start using your computer now. Try pressing the Windows key to open the Start menu, or Windows + E to launch File Explorer."
|
||||||
Start-Sleep -Seconds 10
|
Start-Sleep -Seconds 10
|
||||||
|
|||||||
11
functions/microwin/Microwin-TestKitsRootPaths.ps1
Normal file
11
functions/microwin/Microwin-TestKitsRootPaths.ps1
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
function Microwin-TestKitsRootPaths {
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory = $true, Position = 0)] [string]$adkKitsRootPath,
|
||||||
|
[Parameter(Mandatory = $true, Position = 1)] [string]$adkKitsRootPath_WOW64Environ
|
||||||
|
)
|
||||||
|
|
||||||
|
if (Test-Path "$adkKitsRootPath") { return $true }
|
||||||
|
if (Test-Path "$adkKitsRootPath_WOW64Environ") { return $true }
|
||||||
|
|
||||||
|
return $false
|
||||||
|
}
|
||||||
@@ -39,9 +39,9 @@ Function Install-WinUtilProgramWinget {
|
|||||||
|
|
||||||
$commonArguments = "--id $wingetId --silent"
|
$commonArguments = "--id $wingetId --silent"
|
||||||
$arguments = if ($Action -eq "Install") {
|
$arguments = if ($Action -eq "Install") {
|
||||||
"install $commonArguments --accept-source-agreements --accept-package-agreements"
|
"install $commonArguments --accept-source-agreements --accept-package-agreements --source winget"
|
||||||
} else {
|
} else {
|
||||||
"uninstall $commonArguments"
|
"uninstall $commonArguments --source winget"
|
||||||
}
|
}
|
||||||
|
|
||||||
$processParams = @{
|
$processParams = @{
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
|
|
||||||
function Invoke-ScratchDialog {
|
|
||||||
|
|
||||||
<#
|
|
||||||
|
|
||||||
.SYNOPSIS
|
|
||||||
Enable Editable Text box Alternate Scratch path
|
|
||||||
|
|
||||||
.PARAMETER Button
|
|
||||||
#>
|
|
||||||
$sync.WPFMicrowinISOScratchDir.IsChecked
|
|
||||||
|
|
||||||
|
|
||||||
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
|
|
||||||
$Dialog = New-Object System.Windows.Forms.FolderBrowserDialog
|
|
||||||
$Dialog.SelectedPath = $sync.MicrowinScratchDirBox.Text
|
|
||||||
$Dialog.ShowDialog()
|
|
||||||
$filePath = $Dialog.SelectedPath
|
|
||||||
Write-Host "No ISO is chosen+ $filePath"
|
|
||||||
|
|
||||||
if ([string]::IsNullOrEmpty($filePath)) {
|
|
||||||
Write-Host "No Folder had chosen"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
$sync.MicrowinScratchDirBox.Text = Join-Path $filePath "\"
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -59,7 +59,6 @@ function Invoke-WPFButton {
|
|||||||
"WPFGetIso" {Invoke-MicrowinGetIso}
|
"WPFGetIso" {Invoke-MicrowinGetIso}
|
||||||
"WPFMicrowin" {Invoke-Microwin}
|
"WPFMicrowin" {Invoke-Microwin}
|
||||||
"WPFCloseButton" {Invoke-WPFCloseButton}
|
"WPFCloseButton" {Invoke-WPFCloseButton}
|
||||||
"MicrowinScratchDirBT" {Invoke-ScratchDialog}
|
|
||||||
"WPFWinUtilInstallPSProfile" {Invoke-WinUtilInstallPSProfile}
|
"WPFWinUtilInstallPSProfile" {Invoke-WinUtilInstallPSProfile}
|
||||||
"WPFWinUtilUninstallPSProfile" {Invoke-WinUtilUninstallPSProfile}
|
"WPFWinUtilUninstallPSProfile" {Invoke-WinUtilUninstallPSProfile}
|
||||||
"WPFWinUtilSSHServer" {Invoke-WPFSSHServer}
|
"WPFWinUtilSSHServer" {Invoke-WPFSSHServer}
|
||||||
|
|||||||
7
functions/public/Invoke-WinUtilRemoveEdge.ps1
Normal file
7
functions/public/Invoke-WinUtilRemoveEdge.ps1
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
function Invoke-WinUtilRemoveEdge {
|
||||||
|
Write-Host "Unlocking The Offical Edge Uninstaller And Removing Microsoft Edge..."
|
||||||
|
|
||||||
|
$Path = (Get-ChildItem "C:\Program Files (x86)\Microsoft\Edge\Application\*\Installer\setup.exe")[0].FullName
|
||||||
|
New-Item "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe" -Force
|
||||||
|
Start-Process $Path -ArgumentList '--uninstall --system-level --force-uninstall --delete-profile'
|
||||||
|
}
|
||||||
275
orig-services.txt
Normal file
275
orig-services.txt
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
|
||||||
|
Name DisplayName Status StartType
|
||||||
|
---- ----------- ------ ---------
|
||||||
|
MapsBroker Downloaded Maps Manager Stopped Automatic
|
||||||
|
webthreatdefusersvc_42d01 Web Threat Defense User Service_42d01 Running Automatic
|
||||||
|
OneSyncSvc_42d01 Sync Host_42d01 Running Automatic
|
||||||
|
nsi Network Store Interface Service Running Automatic
|
||||||
|
Dhcp DHCP Client Running Automatic
|
||||||
|
ShellHWDetection Shell Hardware Detection Running Automatic
|
||||||
|
gpsvc Group Policy Client Running Automatic
|
||||||
|
VaultSvc Credential Manager Running Automatic
|
||||||
|
CoreMessagingRegistrar CoreMessaging Running Automatic
|
||||||
|
whesvc Windows Health and Optimized Experiences Running Automatic
|
||||||
|
WinDefend Microsoft Defender Antivirus Service Running Automatic
|
||||||
|
SENS System Event Notification Service Running Automatic
|
||||||
|
DcomLaunch DCOM Server Process Launcher Running Automatic
|
||||||
|
UserManager User Manager Running Automatic
|
||||||
|
CryptSvc Cryptographic Services Running Automatic
|
||||||
|
TermService Remote Desktop Services Running Automatic
|
||||||
|
SystemEventsBroker System Events Broker Running Automatic
|
||||||
|
W32Time Windows Time Running Automatic
|
||||||
|
DusmSvc Data Usage Running Automatic
|
||||||
|
DPS Diagnostic Policy Service Running Automatic
|
||||||
|
SysMain SysMain Running Automatic
|
||||||
|
EventLog Windows Event Log Running Automatic
|
||||||
|
mpssvc Windows Defender Firewall Running Automatic
|
||||||
|
StateRepository State Repository Service Running Automatic
|
||||||
|
EventSystem COM+ Event System Running Automatic
|
||||||
|
Wcmsvc Windows Connection Manager Running Automatic
|
||||||
|
MDCoreSvc Microsoft Defender Core Service Running Automatic
|
||||||
|
FontCache Windows Font Cache Service Running Automatic
|
||||||
|
DispBrokerDesktopSvc Display Policy Service Running Automatic
|
||||||
|
Spooler Print Spooler Running Automatic
|
||||||
|
sppsvc Software Protection Stopped Automatic
|
||||||
|
spice-agent Spice Agent Running Automatic
|
||||||
|
Dnscache DNS Client Running Automatic
|
||||||
|
LSM Local Session Manager Running Automatic
|
||||||
|
AudioEndpointBuilder Windows Audio Endpoint Builder Running Automatic
|
||||||
|
Audiosrv Windows Audio Running Automatic
|
||||||
|
WSearch Windows Search Running Automatic
|
||||||
|
wscsvc Security Center Running Automatic
|
||||||
|
BalloonService BalloonService Running Automatic
|
||||||
|
RpcSs Remote Procedure Call (RPC) Running Automatic
|
||||||
|
WSAIFabricSvc WSAIFabricSvc Running Automatic
|
||||||
|
WpnUserService_42d01 Windows Push Notifications User Service_42d01 Running Automatic
|
||||||
|
LanmanServer Server Running Automatic
|
||||||
|
TrkWks Distributed Link Tracking Client Running Automatic
|
||||||
|
LanmanWorkstation Workstation Running Automatic
|
||||||
|
QEMU-GA QEMU Guest Agent Running Automatic
|
||||||
|
KeyIso CNG Key Isolation Running Automatic
|
||||||
|
AppXSvc AppX Deployment Service (AppXSVC) Running Automatic
|
||||||
|
ProfSvc User Profile Service Running Automatic
|
||||||
|
RpcEptMapper RPC Endpoint Mapper Running Automatic
|
||||||
|
SamSs Security Accounts Manager Running Automatic
|
||||||
|
cbdhsvc_42d01 Clipboard User Service_42d01 Running Automatic
|
||||||
|
Schedule Task Scheduler Running Automatic
|
||||||
|
iphlpsvc IP Helper Running Automatic
|
||||||
|
CDPUserSvc_42d01 Connected Devices Platform User Service_42d01 Running Automatic
|
||||||
|
Winmgmt Windows Management Instrumentation Running Automatic
|
||||||
|
TextInputManagementService Text Input Management Service Running Automatic
|
||||||
|
Themes Themes Running Automatic
|
||||||
|
Power Power Running Automatic
|
||||||
|
BITS Background Intelligent Transfer Service Running Automatic
|
||||||
|
BFE Base Filtering Engine Running Automatic
|
||||||
|
BrokerInfrastructure Background Tasks Infrastructure Service Running Automatic
|
||||||
|
BthAvctpSvc AVCTP service Running Automatic
|
||||||
|
TapiSrv Telephony Stopped Manual
|
||||||
|
RasMan Remote Access Connection Manager Stopped Manual
|
||||||
|
TieringEngineService Storage Tiers Management Stopped Manual
|
||||||
|
TimeBrokerSvc Time Broker Running Manual
|
||||||
|
swprv Microsoft Software Shadow Copy Provider Stopped Manual
|
||||||
|
TokenBroker Web Account Manager Running Manual
|
||||||
|
svsvc Spot Verifier Stopped Manual
|
||||||
|
seclogon Secondary Logon Stopped Manual
|
||||||
|
SDRSVC Windows Backup Stopped Manual
|
||||||
|
SCPolicySvc Smart Card Removal Policy Stopped Manual
|
||||||
|
Sense Windows Defender Advanced Threat Protection Service Stopped Manual
|
||||||
|
SEMgrSvc Payments and NFC/SE Manager Stopped Manual
|
||||||
|
SecurityHealthService Windows Security Service Running Manual
|
||||||
|
RmSvc Radio Management Service Running Manual
|
||||||
|
RetailDemo Retail Demo Service Stopped Manual
|
||||||
|
refsdedupsvc ReFS Dedup Service Stopped Manual
|
||||||
|
ScDeviceEnum Smart Card Device Enumeration Service Stopped Manual
|
||||||
|
SCardSvr Smart Card Stopped Manual
|
||||||
|
RpcLocator Remote Procedure Call (RPC) Locator Stopped Manual
|
||||||
|
SSDPSRV SSDP Discovery Running Manual
|
||||||
|
SNMPTrap SNMP Trap Stopped Manual
|
||||||
|
SmsRouter Microsoft Windows SMS Router Service. Stopped Manual
|
||||||
|
StorSvc Storage Service Stopped Manual
|
||||||
|
StiSvc Windows Image Acquisition (WIA) Stopped Manual
|
||||||
|
SstpSvc Secure Socket Tunneling Protocol Service Stopped Manual
|
||||||
|
SensrSvc Sensor Monitoring Service Stopped Manual
|
||||||
|
SensorService Sensor Service Stopped Manual
|
||||||
|
SensorDataService Sensor Data Service Stopped Manual
|
||||||
|
smphost Microsoft Storage Spaces SMP Stopped Manual
|
||||||
|
SharedAccess Internet Connection Sharing (ICS) Stopped Manual
|
||||||
|
SessionEnv Remote Desktop Configuration Stopped Manual
|
||||||
|
WinRM Windows Remote Management (WS-Management) Stopped Manual
|
||||||
|
WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service Running Manual
|
||||||
|
WiaRpc Still Image Acquisition Events Stopped Manual
|
||||||
|
wlidsvc Microsoft Account Sign-in Assistant Running Manual
|
||||||
|
WlanSvc WLAN AutoConfig Stopped Manual
|
||||||
|
wisvc Windows Insider Service Stopped Manual
|
||||||
|
WFDSConMgrSvc Wi-Fi Direct Services Connection Manager Service Stopped Manual
|
||||||
|
Wecsvc Windows Event Collector Stopped Manual
|
||||||
|
webthreatdefsvc Web Threat Defense Service Stopped Manual
|
||||||
|
WebClient WebClient Stopped Manual
|
||||||
|
WerSvc Windows Error Reporting Service Stopped Manual
|
||||||
|
wercplsupport Problem Reports Control Panel Support Stopped Manual
|
||||||
|
WEPHOSTSVC Windows Encryption Provider Host Service Stopped Manual
|
||||||
|
wlpasvc Local Profile Assistant Service Stopped Manual
|
||||||
|
XblGameSave Xbox Live Game Save Stopped Manual
|
||||||
|
XblAuthManager Xbox Live Auth Manager Stopped Manual
|
||||||
|
WwanSvc WWAN AutoConfig Stopped Manual
|
||||||
|
ZTHELPER ZTDNS Helper service Stopped Manual
|
||||||
|
XboxNetApiSvc Xbox Live Networking Service Stopped Manual
|
||||||
|
XboxGipSvc Xbox Accessory Management Service Stopped Manual
|
||||||
|
wuqisvc Microsoft Usage and Quality Insights Stopped Manual
|
||||||
|
WpcMonSvc Parental Controls Stopped Manual
|
||||||
|
wmiApSrv WMI Performance Adapter Stopped Manual
|
||||||
|
WManSvc Windows Management Service Stopped Manual
|
||||||
|
wuauserv Windows Update Stopped Manual
|
||||||
|
WpnService Windows Push Notifications System Service Stopped Manual
|
||||||
|
WPDBusEnum Portable Device Enumerator Service Stopped Manual
|
||||||
|
WdNisSvc Microsoft Defender Antivirus Network Inspection Service Running Manual
|
||||||
|
VirtioFsSvc VirtIO-FS Service Stopped Manual
|
||||||
|
vds Virtual Disk Stopped Manual
|
||||||
|
UsoSvc Update Orchestrator Service Stopped Manual
|
||||||
|
vmickvpexchange Hyper-V Data Exchange Service Stopped Manual
|
||||||
|
vmicheartbeat Hyper-V Heartbeat Service Stopped Manual
|
||||||
|
vmicguestinterface Hyper-V Guest Service Interface Stopped Manual
|
||||||
|
UserDataSvc_42d01 User Data Access_42d01 Stopped Manual
|
||||||
|
UdkUserSvc_42d01 Udk User Service_42d01 Running Manual
|
||||||
|
TrustedInstaller Windows Modules Installer Stopped Manual
|
||||||
|
TroubleshootingSvc Recommended Troubleshooting Service Stopped Manual
|
||||||
|
upnphost UPnP Device Host Stopped Manual
|
||||||
|
UnistoreSvc_42d01 User Data Storage_42d01 Stopped Manual
|
||||||
|
UmRdpService Remote Desktop Services UserMode Port Redirector Stopped Manual
|
||||||
|
vmicrdv Hyper-V Remote Desktop Virtualization Service Stopped Manual
|
||||||
|
WbioSrvc Windows Biometric Service Stopped Manual
|
||||||
|
wbengine Block Level Backup Engine Service Stopped Manual
|
||||||
|
WarpJITSvc Warp JIT Service Stopped Manual
|
||||||
|
WdiSystemHost Diagnostic System Host Running Manual
|
||||||
|
WdiServiceHost Diagnostic Service Host Stopped Manual
|
||||||
|
wcncsvc Windows Connect Now - Config Registrar Stopped Manual
|
||||||
|
WalletService WalletService Stopped Manual
|
||||||
|
vmicvmsession Hyper-V PowerShell Direct Service Stopped Manual
|
||||||
|
vmictimesync Hyper-V Time Synchronization Service Stopped Manual
|
||||||
|
vmicshutdown Hyper-V Guest Shutdown Service Stopped Manual
|
||||||
|
WaaSMedicSvc WaaSMedicSvc Stopped Manual
|
||||||
|
VSS Volume Shadow Copy Stopped Manual
|
||||||
|
vmicvss Hyper-V Volume Shadow Copy Requestor Stopped Manual
|
||||||
|
DoSvc Delivery Optimization Stopped Manual
|
||||||
|
dmwappushservice Device Management Wireless Application Protocol (WAP) Push message Routing Service Stopped Manual
|
||||||
|
DmEnrollmentSvc Device Management Enrollment Service Stopped Manual
|
||||||
|
dot3svc Wired AutoConfig Stopped Manual
|
||||||
|
EapHost Extensible Authentication Protocol Stopped Manual
|
||||||
|
DsSvc Data Sharing Service Stopped Manual
|
||||||
|
DsmSvc Device Setup Manager Stopped Manual
|
||||||
|
DevicePickerUserSvc_42d01 DevicePicker_42d01 Stopped Manual
|
||||||
|
DeviceInstall Device Install Service Stopped Manual
|
||||||
|
DeviceAssociationService Device Association Service Stopped Manual
|
||||||
|
DevicesFlowUserSvc_42d01 DevicesFlow_42d01 Stopped Manual
|
||||||
|
DisplayEnhancementService Display Enhancement Service Stopped Manual
|
||||||
|
diagsvc Diagnostic Execution Service Stopped Manual
|
||||||
|
DevQueryBroker DevQuery Background Discovery Broker Stopped Manual
|
||||||
|
edgeupdate Microsoft Edge Update Service (edgeupdate) Stopped Manual
|
||||||
|
GameInputSvc GameInput Service Stopped Manual
|
||||||
|
FrameServerMonitor Windows Camera Frame Server Monitor Stopped Manual
|
||||||
|
FrameServer Windows Camera Frame Server Stopped Manual
|
||||||
|
GraphicsPerfSvc GraphicsPerfSvc Stopped Manual
|
||||||
|
HvHost HV Host Service Stopped Manual
|
||||||
|
hpatchmon Hotpatch Monitoring Service Stopped Manual
|
||||||
|
hidserv Human Interface Device Service Stopped Manual
|
||||||
|
embeddedmode Embedded Mode Stopped Manual
|
||||||
|
EFS Encrypting File System (EFS) Stopped Manual
|
||||||
|
edgeupdatem Microsoft Edge Update Service (edgeupdatem) Stopped Manual
|
||||||
|
EntAppSvc Enterprise App Management Service Stopped Manual
|
||||||
|
fhsvc File History Service Stopped Manual
|
||||||
|
FDResPub Function Discovery Resource Publication Stopped Manual
|
||||||
|
fdPHost Function Discovery Provider Host Stopped Manual
|
||||||
|
AxInstSV ActiveX Installer (AxInstSV) Stopped Manual
|
||||||
|
autotimesvc Cellular Time Stopped Manual
|
||||||
|
ApxSvc Windows Virtual Audio Device Proxy Service Stopped Manual
|
||||||
|
BcastDVRUserService_42d01 GameDVR and Broadcast User Service_42d01 Stopped Manual
|
||||||
|
BTAGService Bluetooth Audio Gateway Service Stopped Manual
|
||||||
|
BluetoothUserService_42d01 Bluetooth User Support Service_42d01 Stopped Manual
|
||||||
|
BDESVC BitLocker Drive Encryption Service Stopped Manual
|
||||||
|
ALG Application Layer Gateway Service Stopped Manual
|
||||||
|
ADPSvc Aggregated Data Platform Service Stopped Manual
|
||||||
|
AarSvc_42d01 Agent Activation Runtime_42d01 Stopped Manual
|
||||||
|
AppIDSvc Application Identity Running Manual
|
||||||
|
AppReadiness App Readiness Stopped Manual
|
||||||
|
AppMgmt Application Management Stopped Manual
|
||||||
|
Appinfo Application Information Running Manual
|
||||||
|
bthserv Bluetooth Support Service Stopped Manual
|
||||||
|
CredentialEnrollmentManagerUserSvc_42d01 CredentialEnrollmentManagerUserSvc_42d01 Stopped Manual
|
||||||
|
ConsentUxUserSvc_42d01 ConsentUX User Service_42d01 Stopped Manual
|
||||||
|
COMSysApp COM+ System Application Stopped Manual
|
||||||
|
CscService Offline Files Stopped Manual
|
||||||
|
DeviceAssociationBrokerSvc_42d01 DeviceAssociationBroker_42d01 Stopped Manual
|
||||||
|
defragsvc Optimize drives Stopped Manual
|
||||||
|
dcsvc Declared Configuration(DC) service Stopped Manual
|
||||||
|
CDPSvc Connected Devices Platform Service Running Manual
|
||||||
|
CaptureService_42d01 CaptureService_42d01 Stopped Manual
|
||||||
|
camsvc Capability Access Manager Service Running Manual
|
||||||
|
CertPropSvc Certificate Propagation Stopped Manual
|
||||||
|
cloudidsvc Microsoft Cloud Identity Service Stopped Manual
|
||||||
|
CloudBackupRestoreSvc_42d01 Cloud Backup and Restore Service_42d01 Stopped Manual
|
||||||
|
ClipSVC Client License Service (ClipSVC) Running Manual
|
||||||
|
P9RdrService_42d01 P9RdrService_42d01 Stopped Manual
|
||||||
|
NPSMSvc_42d01 Now Playing Session Manager Service_42d01 Stopped Manual
|
||||||
|
NlaSvc Network Location Awareness Stopped Manual
|
||||||
|
PcaSvc Program Compatibility Assistant Service Running Manual
|
||||||
|
perceptionsimulation Windows Perception Simulation Service Stopped Manual
|
||||||
|
PenService_42d01 PenService_42d01 Stopped Manual
|
||||||
|
PeerDistSvc BranchCache Stopped Manual
|
||||||
|
Netman Network Connections Stopped Manual
|
||||||
|
Netlogon Netlogon Stopped Manual
|
||||||
|
NcdAutoSetup Network Connected Devices Auto-Setup Stopped Manual
|
||||||
|
netprofm Network List Service Running Manual
|
||||||
|
NgcSvc Microsoft Passport Stopped Manual
|
||||||
|
NgcCtnrSvc Microsoft Passport Container Stopped Manual
|
||||||
|
NetSetupSvc Network Setup Service Stopped Manual
|
||||||
|
PrintWorkflowUserSvc_42d01 PrintWorkflow_42d01 Stopped Manual
|
||||||
|
PrintScanBrokerService PrintScanBrokerService Stopped Manual
|
||||||
|
PrintNotify Printer Extensions and Notifications Stopped Manual
|
||||||
|
PushToInstall Windows PushToInstall Service Stopped Manual
|
||||||
|
RasAuto Remote Access Auto Connection Manager Stopped Manual
|
||||||
|
QWAVE Quality Windows Audio Video Experience Stopped Manual
|
||||||
|
QEMU Guest Agent VSS Provider QEMU Guest Agent VSS Provider Stopped Manual
|
||||||
|
PimIndexMaintenanceSvc_42d01 Contact Data_42d01 Stopped Manual
|
||||||
|
PhoneSvc Phone Service Stopped Manual
|
||||||
|
PerfHost Performance Counter DLL Host Stopped Manual
|
||||||
|
pla Performance Logs & Alerts Stopped Manual
|
||||||
|
PrintDeviceConfigurationService Print Device Configuration Service Stopped Manual
|
||||||
|
PolicyAgent IPsec Policy Agent Stopped Manual
|
||||||
|
PlugPlay Plug and Play Running Manual
|
||||||
|
NcbService Network Connection Broker Running Manual
|
||||||
|
lmhosts TCP/IP NetBIOS Helper Running Manual
|
||||||
|
lltdsvc Link-Layer Topology Discovery Mapper Stopped Manual
|
||||||
|
LicenseManager Windows License Manager Service Running Manual
|
||||||
|
McmSvc Mobile Connectivity Management Service Stopped Manual
|
||||||
|
LxpSvc Language Experience Service Stopped Manual
|
||||||
|
LocalKdc Kerberos Local Key Distribution Center Stopped Manual
|
||||||
|
lfsvc Geolocation Service Stopped Manual
|
||||||
|
InstallService Microsoft Store Install Service Stopped Manual
|
||||||
|
IKEEXT IKE and AuthIP IPsec Keying Modules Stopped Manual
|
||||||
|
icssvc Windows Mobile Hotspot Service Stopped Manual
|
||||||
|
KtmRm KtmRm for Distributed Transaction Coordinator Stopped Manual
|
||||||
|
IpxlatCfgSvc IP Translation Configuration Service Stopped Manual
|
||||||
|
InventorySvc Inventory and Compatibility Appraisal service Stopped Manual
|
||||||
|
McpManagementService McpManagementService Stopped Manual
|
||||||
|
MsKeyboardFilter Microsoft Keyboard Filter Stopped Manual
|
||||||
|
msiserver Windows Installer Stopped Manual
|
||||||
|
NaturalAuthentication Natural Authentication Stopped Manual
|
||||||
|
NcaSvc Network Connectivity Assistant Stopped Manual
|
||||||
|
MSiSCSI Microsoft iSCSI Initiator Service Stopped Manual
|
||||||
|
MessagingService_42d01 MessagingService_42d01 Stopped Manual
|
||||||
|
MicrosoftEdgeElevationService Microsoft Edge Elevation Service (MicrosoftEdgeElevationService) Stopped Manual
|
||||||
|
midisrv Windows MIDI Service Stopped Manual
|
||||||
|
MSDTC Distributed Transaction Coordinator Stopped Manual
|
||||||
|
RemoteRegistry Remote Registry Stopped Disabled
|
||||||
|
UevAgentService User Experience Virtualization Service Stopped Disabled
|
||||||
|
AssignedAccessManagerSvc AssignedAccessManager Service Stopped Disabled
|
||||||
|
RemoteAccess Routing and Remote Access Stopped Disabled
|
||||||
|
ssh-agent OpenSSH Authentication Agent Stopped Disabled
|
||||||
|
shpamsvc Shared PC Account Manager Stopped Disabled
|
||||||
|
DialogBlockingService DialogBlockingService Stopped Disabled
|
||||||
|
DiagTrack Connected User Experiences and Telemetry Stopped Disabled
|
||||||
|
tzautoupdate Auto Time Zone Updater Stopped Disabled
|
||||||
|
AppVClient Microsoft App-V Client Stopped Disabled
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1289,7 +1289,7 @@
|
|||||||
Foreground="{DynamicResource MainForegroundColor}">
|
Foreground="{DynamicResource MainForegroundColor}">
|
||||||
<Run FontWeight="Bold">Balanced Security Configuration</Run>
|
<Run FontWeight="Bold">Balanced Security Configuration</Run>
|
||||||
<LineBreak/>
|
<LineBreak/>
|
||||||
- Feature updates delayed by 2 years
|
- Feature updates delayed by 365 days
|
||||||
<LineBreak/>
|
<LineBreak/>
|
||||||
- Security updates installed after 4 days
|
- Security updates installed after 4 days
|
||||||
<LineBreak/><LineBreak/>
|
<LineBreak/><LineBreak/>
|
||||||
@@ -1350,41 +1350,11 @@
|
|||||||
HorizontalAlignment="Stretch">
|
HorizontalAlignment="Stretch">
|
||||||
<StackPanel Name="MicrowinMain" Background="{DynamicResource MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Grid.Row="0">
|
<StackPanel Name="MicrowinMain" Background="{DynamicResource MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Grid.Row="0">
|
||||||
<StackPanel Name="MicrowinISOPanel" Background="Transparent" SnapsToDevicePixels="True" Margin="1">
|
<StackPanel Name="MicrowinISOPanel" Background="Transparent" SnapsToDevicePixels="True" Margin="1">
|
||||||
<CheckBox x:Name="WPFMicrowinDownloadFromGitHub" Content="Download oscdimg.exe from CTT GitHub repo" IsChecked="True" Margin="{DynamicResource MicrowinCheckBoxMargin}" />
|
|
||||||
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}">
|
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}">
|
||||||
Choose a Windows ISO file that you've downloaded <LineBreak/>
|
Choose a Windows ISO file that you've downloaded <LineBreak/>
|
||||||
Check the status in the console
|
Check the status in the console
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||||
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}" ToolTip="Scratch directories act as a custom destination for image files"><Bold>Scratch directory settings (optional)</Bold></TextBlock>
|
|
||||||
<CheckBox x:Name="WPFMicrowinISOScratchDir" Content="Use ISO directory for ScratchDir " IsChecked="False" Margin="{DynamicResource MicrowinCheckBoxMargin}"
|
|
||||||
ToolTip="Check this to use the path of the ISO file you specify as a scratch directory" />
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" /> <!-- Takes the remaining space -->
|
|
||||||
<ColumnDefinition Width="30" /> <!-- Fixed width for Button -->
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<TextBox Name="MicrowinScratchDirBox" Background="Transparent" BorderBrush="{DynamicResource MainForegroundColor}"
|
|
||||||
Text="Scratch"
|
|
||||||
Margin="2"
|
|
||||||
IsReadOnly="False"
|
|
||||||
ToolTip="Specify an alternate path for the scratch directory"
|
|
||||||
Grid.Column="0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Foreground="{DynamicResource LabelboxForegroundColor}">
|
|
||||||
</TextBox>
|
|
||||||
<Button Name="MicrowinScratchDirBT"
|
|
||||||
Width="Auto"
|
|
||||||
Height="Auto"
|
|
||||||
Grid.Column="1"
|
|
||||||
Margin="2"
|
|
||||||
Padding="1" VerticalAlignment="Center">
|
|
||||||
<Button.Content>
|
|
||||||
...
|
|
||||||
</Button.Content>
|
|
||||||
</Button>
|
|
||||||
</Grid>
|
|
||||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
|
||||||
<TextBox Name="MicrowinFinalIsoLocation" Background="Transparent" BorderBrush="{DynamicResource MainForegroundColor}"
|
<TextBox Name="MicrowinFinalIsoLocation" Background="Transparent" BorderBrush="{DynamicResource MainForegroundColor}"
|
||||||
Text="ISO location will be printed here"
|
Text="ISO location will be printed here"
|
||||||
Margin="2"
|
Margin="2"
|
||||||
@@ -1458,8 +1428,6 @@
|
|||||||
<CheckBox Name="MicrowinImportDrivers" Content="Import drivers from current system" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Export all third-party drivers from your system and inject them to the MicroWin image"/>
|
<CheckBox Name="MicrowinImportDrivers" Content="Import drivers from current system" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Export all third-party drivers from your system and inject them to the MicroWin image"/>
|
||||||
<CheckBox Name="MicrowinCopyVirtIO" Content="Include VirtIO drivers" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Copy VirtIO Guest Tools drivers to your ISO file. Check this only if you want to use it on QEMU/Proxmox VE"/>
|
<CheckBox Name="MicrowinCopyVirtIO" Content="Include VirtIO drivers" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Copy VirtIO Guest Tools drivers to your ISO file. Check this only if you want to use it on QEMU/Proxmox VE"/>
|
||||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||||
<CheckBox Name="WPFMicrowinCopyToUsb" Content="Copy to Ventoy" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Copy to USB disk with a label Ventoy"/>
|
|
||||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
|
||||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap"><Bold>Custom user settings (leave empty for default user)</Bold></TextBlock>
|
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap"><Bold>Custom user settings (leave empty for default user)</Bold></TextBlock>
|
||||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">User name (20 characters max.):</TextBlock>
|
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">User name (20 characters max.):</TextBlock>
|
||||||
<TextBox Name="MicrowinUserName" Background="Transparent" BorderThickness="1" BorderBrush="{DynamicResource MainForegroundColor}"
|
<TextBox Name="MicrowinUserName" Background="Transparent" BorderThickness="1" BorderBrush="{DynamicResource MainForegroundColor}"
|
||||||
@@ -1477,11 +1445,6 @@
|
|||||||
Foreground="{DynamicResource LabelboxForegroundColor}"
|
Foreground="{DynamicResource LabelboxForegroundColor}"
|
||||||
/>
|
/>
|
||||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap"><Bold>Tweaks (leave empty for default settings)</Bold></TextBlock>
|
|
||||||
<CheckBox Name="MicroWinWPBT" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="If enabled then allows your computer vendor to execute a program each time it boots. It enables computer vendors to force install anti-theft software, software drivers, or a software program conveniently. This could also be a security risk."><AccessText TextWrapping="Wrap" Text="Disable Windows Platform Binary Table (WPBT) (ADVANCED TWEAK)" /></CheckBox>
|
|
||||||
<CheckBox Name="MicroWinUnsupported" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="If enabled then it will allow you to upgrade your PC to Windows 11 if your PC does not support Windows 11 yet. This is good for if you do not have a USB and want to upgrade to Windows 11 on unsupported hardware."><AccessText TextWrapping="Wrap" Text="Allow this PC to upgrade to Windows 11" /></CheckBox>
|
|
||||||
<CheckBox Name="MicroWinESD" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="The ESD file format compresses the installation image even further, therefore reducing ISO file sizes a little more. Select this if you have a small USB."><AccessText TextWrapping="Wrap" Text="Convert this image to ESD (This will take longer)" /></CheckBox>
|
|
||||||
<CheckBox Name="MicroWinNoFLA" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="True" ToolTip="The First Logon Animation is an animation that is played when a user logs on for the first time. It can artificially increase wait times. Select this option to automatically close the first logon animation and reach the desktop quicker (additional system preparation will still be done)"><AccessText TextWrapping="Wrap" Text="Skip First Logon Animation" /></CheckBox>
|
|
||||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">WinUtil configuration file (JSON)</TextBlock>
|
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">WinUtil configuration file (JSON)</TextBlock>
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -1564,6 +1527,7 @@
|
|||||||
<Bold>MicroWin features:</Bold><LineBreak/>
|
<Bold>MicroWin features:</Bold><LineBreak/>
|
||||||
- Remove Telemetry and Tracking <LineBreak/>
|
- Remove Telemetry and Tracking <LineBreak/>
|
||||||
- Fast Install using either the "User" local account or the account of your choosing <LineBreak/>
|
- Fast Install using either the "User" local account or the account of your choosing <LineBreak/>
|
||||||
|
- Bypasses Windows 11 System Requirements on unsupported computers <LineBreak/>
|
||||||
- No internet requirement for install <LineBreak/>
|
- No internet requirement for install <LineBreak/>
|
||||||
- Apps debloat <LineBreak/>
|
- Apps debloat <LineBreak/>
|
||||||
<LineBreak/>
|
<LineBreak/>
|
||||||
|
|||||||
Reference in New Issue
Block a user