mirror of
https://github.com/zoicware/RemoveWindowsAI.git
synced 2026-02-06 05:36:54 +01:00
disable app actions via settings.dat
This commit is contained in:
@@ -394,6 +394,95 @@ function Create-RestorePoint {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Set-UwpAppRegistryEntry {
|
||||||
|
# modified to work in windows powershell from https://github.com/agadiffe/WindowsMize/blob/fe78912ccb1c83d440bd2123f5e43a6156fab31a/src/modules/applications/settings/public/Set-UwpAppSetting.ps1
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Modifies UWP app registry entries in the settings.dat file.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
PS> $setting = [PSCustomObject]@{
|
||||||
|
Name = 'VideoAutoplay'
|
||||||
|
Value = '0'
|
||||||
|
Type = '5f5e10b'
|
||||||
|
}
|
||||||
|
PS> $setting | Set-UwpAppRegistryEntry -FilePath $FilePath
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding()]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(Mandatory, ValueFromPipeline)]
|
||||||
|
$InputObject,
|
||||||
|
|
||||||
|
[Parameter(Mandatory)]
|
||||||
|
[string] $FilePath
|
||||||
|
)
|
||||||
|
|
||||||
|
begin {
|
||||||
|
$AppSettingsRegPath = 'HKEY_USERS\APP_SETTINGS'
|
||||||
|
$RegContent = "Windows Registry Editor Version 5.00`n"
|
||||||
|
}
|
||||||
|
|
||||||
|
process {
|
||||||
|
$Value = $InputObject.Value
|
||||||
|
$Value = switch ($InputObject.Type) {
|
||||||
|
'5f5e10b' {
|
||||||
|
# Single byte for boolean
|
||||||
|
'{0:x2}' -f [byte][int]$Value
|
||||||
|
}
|
||||||
|
'5f5e10c' {
|
||||||
|
# Unicode string
|
||||||
|
$bytes = [System.Text.Encoding]::Unicode.GetBytes($Value + "`0")
|
||||||
|
($bytes | ForEach-Object { '{0:x2}' -f $_ }) -join ' '
|
||||||
|
}
|
||||||
|
'5f5e104' {
|
||||||
|
# Int32
|
||||||
|
$bytes = [BitConverter]::GetBytes([int]$Value)
|
||||||
|
($bytes | ForEach-Object { '{0:x2}' -f $_ }) -join ' '
|
||||||
|
}
|
||||||
|
'5f5e105' {
|
||||||
|
# UInt32
|
||||||
|
$bytes = [BitConverter]::GetBytes([uint32]$Value)
|
||||||
|
($bytes | ForEach-Object { '{0:x2}' -f $_ }) -join ' '
|
||||||
|
}
|
||||||
|
'5f5e106' {
|
||||||
|
# Int64
|
||||||
|
$bytes = [BitConverter]::GetBytes([int64]$Value)
|
||||||
|
($bytes | ForEach-Object { '{0:x2}' -f $_ }) -join ' '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$Value = $Value -replace '\s+', ','
|
||||||
|
|
||||||
|
# create timestamp for remaining bytes
|
||||||
|
$timestampBytes = [BitConverter]::GetBytes([int64](Get-Date).ToFileTime())
|
||||||
|
$Timestamp = ($timestampBytes | ForEach-Object { '{0:x2}' -f $_ }) -join ','
|
||||||
|
|
||||||
|
# build registry content
|
||||||
|
if ($InputObject.Path) {
|
||||||
|
$RegKey = $InputObject.Path
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$RegKey = 'LocalState'
|
||||||
|
}
|
||||||
|
$RegContent += "`n[$AppSettingsRegPath\$RegKey]
|
||||||
|
""$($InputObject.Name)""=hex($($InputObject.Type)):$Value,$Timestamp`n" -replace '(?m)^ *'
|
||||||
|
}
|
||||||
|
|
||||||
|
end {
|
||||||
|
$SettingRegFilePath = "$($tempDir)uwp_app_settings.reg"
|
||||||
|
$RegContent | Out-File -FilePath $SettingRegFilePath
|
||||||
|
|
||||||
|
reg.exe UNLOAD $AppSettingsRegPath 2>&1 | Out-Null
|
||||||
|
reg.exe LOAD $AppSettingsRegPath $FilePath | Out-Null
|
||||||
|
reg.exe IMPORT $SettingRegFilePath 2>&1 | Out-Null
|
||||||
|
reg.exe UNLOAD $AppSettingsRegPath | Out-Null
|
||||||
|
|
||||||
|
Remove-Item -Path $SettingRegFilePath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function Disable-Registry-Keys {
|
function Disable-Registry-Keys {
|
||||||
#maybe add params for particular parts
|
#maybe add params for particular parts
|
||||||
|
|
||||||
@@ -927,7 +1016,34 @@ Windows Registry Editor Version 5.00
|
|||||||
Remove-Item "$($tempDir)DisableAIPhotos.reg" -Force -ErrorAction SilentlyContinue
|
Remove-Item "$($tempDir)DisableAIPhotos.reg" -Force -ErrorAction SilentlyContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#disable app actions
|
||||||
|
#method credit : https://github.com/agadiffe/WindowsMize
|
||||||
|
$settingsDat = "$env:LOCALAPPDATA\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\Settings\settings.dat"
|
||||||
|
|
||||||
|
if (Test-Path $settingsDat) {
|
||||||
|
Write-Status -msg "$(@('Disabling','Enabling')[$revert]) App Actions..."
|
||||||
|
|
||||||
|
$apps = @(
|
||||||
|
'Microsoft.MicrosoftOfficeHub_8wekyb3d8bbwe'
|
||||||
|
'Microsoft.Office.ActionsServer_8wekyb3d8bbwe'
|
||||||
|
'MSTeams_8wekyb3d8bbwe'
|
||||||
|
'Microsoft.Paint_8wekyb3d8bbwe'
|
||||||
|
'Microsoft.Windows.Photos_8wekyb3d8bbwe'
|
||||||
|
'MicrosoftWindows.Client.CBS_cw5n1h2txyewy' #describe image (system)
|
||||||
|
)
|
||||||
|
#prevent file lock
|
||||||
|
Stop-Process -Name @('SearchHost', 'AppActions') -Force -ErrorAction SilentlyContinue
|
||||||
|
foreach ($app in $apps) {
|
||||||
|
$setting = [PSCustomObject]@{
|
||||||
|
Name = $app
|
||||||
|
Path = 'LocalState\DisabledApps'
|
||||||
|
Value = @('1', '0')[$revert] # 1 = disable 0 = enable
|
||||||
|
Type = '5f5e10b'
|
||||||
|
}
|
||||||
|
$setting | Set-UwpAppRegistryEntry -FilePath $settingsDat
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#force policy changes
|
#force policy changes
|
||||||
|
|||||||
Reference in New Issue
Block a user