class FirefoxService { static [string] FindInstallDir() { $candidates = @( "C:\Program Files\Mozilla Firefox", "C:\Program Files (x86)\Mozilla Firefox" ) foreach ($c in $candidates) { if (Test-Path (Join-Path $c "firefox.exe")) { return $c } } try { $reg = Get-ItemProperty "HKLM:\SOFTWARE\Mozilla\Mozilla Firefox" -ErrorAction Stop if ($reg."Install Directory" -and (Test-Path $reg."Install Directory")) { return $reg."Install Directory" } } catch {} return $null } static [string] FindProfile() { $profilesPath = Join-Path ([Environment]::GetFolderPath("ApplicationData")) "Mozilla\Firefox\Profiles" if (-not (Test-Path $profilesPath)) { return $null } $profiles = Get-ChildItem $profilesPath -Directory | Where-Object { $_.Name -match '\.default|default-release' } if ($profiles) { return $profiles[0].FullName } $all = Get-ChildItem $profilesPath -Directory if ($all) { return $all[0].FullName } return $null } static [bool] IsRunning() { return [bool](Get-Process -Name "firefox" -ErrorAction SilentlyContinue) } static [bool] IsAdmin() { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() return (New-Object System.Security.Principal.WindowsPrincipal($id)).IsInRole( [System.Security.Principal.WindowsBuiltInRole]::Administrator) } static [bool] IsIntuneManaged() { $key = "HKLM:\SOFTWARE\Policies\Mozilla\Firefox" if (Test-Path $key) { return [bool](Get-ItemProperty $key -ErrorAction SilentlyContinue) } return $false } static [object[]] GetInstalledAddons([string]$profilePath) { $json = Join-Path $profilePath "extensions.json" if (-not (Test-Path $json)) { return @() } return (Get-Content $json -Raw | ConvertFrom-Json).addons | Where-Object { $_.type -eq "extension" } } }