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 {
|
||||
#maybe add params for particular parts
|
||||
|
||||
@@ -927,7 +1016,34 @@ Windows Registry Editor Version 5.00
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user