A lightweight Windows 11 system tray application that hardens a laptop against the most common attack vectors targeting non-technical elderly users: malicious downloads, phishing sites, rogue software installs, fake popups, and social engineering.
This is not an antivirus replacement. It works alongside Windows Defender by eliminating the human-error vectors that Defender can't prevent.
- Download Watchdog — Monitors Downloads and Desktop folders in real time. Quarantines dangerous files (.exe, .msi, .bat, .ps1, .vbs, etc.) the moment they appear, including executables hidden inside ZIP archives.
- Browser Hardening — Applies managed policies to Chrome and Edge via the Windows Registry: blocks dangerous downloads, enables Safe Browsing / SmartScreen, disables developer tools, blocks popups, and restricts extensions to an allowlist (uBlock Origin + uBlock Origin Lite).
- DNS Protection — Configures Cloudflare Families (
1.1.1.3/1.0.0.3) or Quad9 (9.9.9.9) to block malware and adult content at the DNS level. - Windows Defender Enforcement — Checks every 30 minutes that Defender is enabled and signatures are up to date. Alerts if anything is off.
- Windows Update Monitoring — Warns if no updates have been installed in 30+ days.
- Remote Alerts — Sends email notifications when files are quarantined and a daily health digest so you can monitor remotely.
- System Tray UI — Green/yellow/red shield icon shows protection status at a glance. Password-protected exit prevents accidental closure.
- Windows 11
- Python 3.12+ (for building from source)
- Google Chrome (set as default browser)
pip install -r requirements.txt
python -m PyInstaller installer/build.specOutput: dist/GrandparentShield.exe
- Copy
GrandparentShield.exeandinstaller/install.batto the target machine - Right-click
install.bat→ Run as administrator
The installer will:
- Copy the executable to
C:\Program Files\GrandparentShield\ - Register auto-start via Task Scheduler (runs on login)
- Configure Cloudflare Families DNS
- Harden UAC settings
- Launch the application
Run installer/uninstall.bat as administrator to reverse all changes.
On startup, GrandparentShield:
- Starts monitoring Downloads and Desktop for dangerous files
- Scans those folders for any dangerous files that already exist
- Applies browser security policies to Chrome and Edge
- Sets Chrome as the default browser (if not already)
- Checks DNS configuration
- Verifies Windows Defender status
- Checks Windows Update recency
- Sits in the system tray showing a green shield
When a dangerous file is detected:
- The file is moved to
%APPDATA%/GrandparentShield/quarantine/ - A toast notification tells the user to contact their family member for help
- An email alert is sent to the configured caretaker
All configuration lives in %APPDATA%/GrandparentShield/config.json. There is no settings UI by design — configuration changes are made by the caretaker editing the file directly.
Key settings in config/default_config.json:
watched_folders— Folders to monitor for dangerous filesdangerous_extensions— File extensions to quarantineallowed_executables— Known-safe executables to skipdns.provider— DNS provider (cloudflare_familiesorquad9)alerts.email— Caretaker email for remote notificationsexit_password— Password required to close the application
├── main.py # Entry point, tray app orchestration
├── config/
│ └── default_config.json # Default settings
├── modules/
│ ├── browser_hardening.py # Chrome/Edge registry policies
│ ├── dns_protection.py # Protective DNS configuration
│ ├── download_watchdog.py # File system monitoring + quarantine
│ ├── defender_check.py # Windows Defender status checks
│ ├── update_check.py # Windows Update monitoring
│ ├── notifications.py # Local toast notifications
│ ├── remote_alert.py # Email alerts to caretaker
│ └── uac_hardening.py # UAC policy enforcement
├── ui/
│ └── tray.py # System tray icon + menu
├── utils/
│ ├── registry.py # Windows Registry helpers
│ ├── powershell.py # PowerShell command runner
│ └── logger.py # Logging with rotation
├── installer/
│ ├── build.spec # PyInstaller build config
│ └── install.bat # One-click installer
└── tests/ # Unit tests
Private use only.