mirror of
https://github.com/NexusOne23/noid-privacy.git
synced 2026-02-07 12:11:53 +01:00
53 lines
2.4 KiB
PowerShell
53 lines
2.4 KiB
PowerShell
function Set-TelemetrySettings {
|
|
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[PSCustomObject]$Config
|
|
)
|
|
|
|
try {
|
|
Write-Log -Level INFO -Message "Applying telemetry settings ($($Config.Mode) mode)..." -Module "Privacy"
|
|
|
|
# Debug: Check if DataCollection exists
|
|
if (-not $Config.DataCollection) {
|
|
Write-Log -Level ERROR -Message "DataCollection is NULL or empty in config!" -Module "Privacy"
|
|
Write-Log -Level DEBUG -Message "Config properties: $($Config.PSObject.Properties.Name -join ', ')" -Module "Privacy"
|
|
return $false
|
|
}
|
|
|
|
$keyCount = @($Config.DataCollection.PSObject.Properties.Name).Count
|
|
Write-Log -Level DEBUG -Message "DataCollection has $keyCount registry keys to process" -Module "Privacy"
|
|
|
|
foreach ($keyPath in $Config.DataCollection.PSObject.Properties.Name) {
|
|
$key = $keyPath
|
|
$values = $Config.DataCollection.$keyPath
|
|
|
|
if (!(Test-Path $key)) {
|
|
New-Item -Path $key -Force | Out-Null
|
|
Write-Log -Level INFO -Message "Created registry key: $key" -Module "Privacy"
|
|
}
|
|
|
|
foreach ($valueName in $values.PSObject.Properties.Name) {
|
|
$valueData = $values.$valueName
|
|
$existing = Get-ItemProperty -Path $key -Name $valueName -ErrorAction SilentlyContinue
|
|
if ($null -ne $existing) {
|
|
Set-ItemProperty -Path $key -Name $valueName -Value $valueData.Value -Force | Out-Null
|
|
} else {
|
|
$propType = switch ($valueData.Type) {
|
|
"DWord" { "DWord" }
|
|
"String" { "String" }
|
|
default { "DWord" }
|
|
}
|
|
New-ItemProperty -Path $key -Name $valueName -Value $valueData.Value -PropertyType $propType -Force | Out-Null
|
|
}
|
|
Write-Log -Level INFO -Message "Set $key\$valueName = $($valueData.Value) ($($valueData.Description))" -Module "Privacy"
|
|
}
|
|
}
|
|
|
|
Write-Log -Level SUCCESS -Message "Telemetry settings applied successfully" -Module "Privacy"
|
|
return $true
|
|
} catch {
|
|
Write-Log -Level ERROR -Message "Failed to apply telemetry settings: $_" -Module "Privacy"
|
|
return $false
|
|
}
|
|
}
|