Files
firefox-addin-manager/MVVM/Services/RegistryService.ps1
T
2026-06-10 21:57:53 +02:00

69 lines
2.5 KiB
PowerShell

class RegistryService {
static [string] $BasePath = "HKLM:\SOFTWARE\Policies\Mozilla\Firefox"
static [string] $ExtPath = "HKLM:\SOFTWARE\Policies\Mozilla\Firefox\ExtensionSettings"
static [void] EnsureKey([string]$path) {
if (-not (Test-Path $path)) { New-Item -Path $path -Force | Out-Null }
}
static [void] SetString([string]$path, [string]$name, [string]$value) {
[RegistryService]::EnsureKey($path)
Set-ItemProperty -Path $path -Name $name -Value $value -Type String
}
static [void] SetDWord([string]$path, [string]$name, [int]$value) {
[RegistryService]::EnsureKey($path)
Set-ItemProperty -Path $path -Name $name -Value $value -Type DWord
}
static [void] RemoveValue([string]$path, [string]$name) {
Remove-ItemProperty -Path $path -Name $name -ErrorAction SilentlyContinue
}
static [void] RemoveKey([string]$path) {
if (Test-Path $path) { Remove-Item -Path $path -Recurse -Force }
}
static [void] DeployAddon([AddonModel]$addon) {
$key = Join-Path ([RegistryService]::ExtPath) $addon.Id
[RegistryService]::SetString($key, "installation_mode", "force_installed")
if ($addon.InstallUrl) {
[RegistryService]::SetString($key, "install_url", $addon.InstallUrl)
}
}
static [void] BlockAddon([string]$addonId) {
$key = Join-Path ([RegistryService]::ExtPath) $addonId
[RegistryService]::SetString($key, "installation_mode", "blocked")
}
static [void] SetWildcard([string]$mode) {
$key = Join-Path ([RegistryService]::ExtPath) "*"
[RegistryService]::SetString($key, "installation_mode", $mode)
}
static [void] RemoveJsonString() {
[RegistryService]::RemoveValue([RegistryService]::BasePath, "ExtensionSettings")
}
static [hashtable] GetExtensionSettings() {
$result = @{}
if (-not (Test-Path ([RegistryService]::ExtPath))) { return $result }
Get-ChildItem ([RegistryService]::ExtPath) -ErrorAction SilentlyContinue | ForEach-Object {
$props = Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue
$result[$_.PSChildName] = @{
installation_mode = $props.installation_mode
install_url = $props.install_url
}
}
return $result
}
static [string] GetValue([string]$path, [string]$name) {
try {
return (Get-ItemProperty $path -Name $name -ErrorAction Stop).$name
} catch { return $null }
}
}