Add RegistryService.ps1
This commit is contained in:
@@ -0,0 +1,68 @@
|
|||||||
|
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 }
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user