Repository navigation
Releases: edemarest/RobloxGuard
Release list
v1.5.0
v1.5.0: PID lockfile-based single-instance enforcement Major improvements: - Replaced unreliable Windows global Mutex with PID lockfile - Automatic stale lockfile detection and cleanup - Process PID validation ensures accuracy - Fixes: duplicate monitor processes on startup - Fixes: mutex permission errors on some systems - More inspectable and portable Testing results: Fresh install starts monitor Second launch detects existing monitor Only 1 process runs (not duplicates) Lockfile contains correct PID Stale lockfiles automatically cleaned
v1.4.0
Improved process detection and monitor startup reliability - Fixes: launcher and monitor PID confusion - Fixes: mutex timeout issues on first run - Fixes: process name collisions between launcher and monitor - Adds: retry logic for mutex acquisition - Adds: improved diagnostic logging
v1.3.9
Force launcher exit during uninstall for clean process termination
v1.3.7 - Improved Uninstall Process Termination
Fix: Better Uninstall Process Cleanup
Problem: Running --uninstall\ would remove AppData but the monitor process could still be running in the background.
Solution:
- Triple-pass process termination (multiple kill attempts)
- Final kill check before AppData deletion
- Proper timeouts between kill attempts (500ms)
- Clear user feedback on completion
- All processes forcefully terminated with \Kill(true)\
Changes:
- Multiple kill passes to ensure process termination
- Final validation before cleaning AppData
- User sees completion message
- Better logging and error handling
- 500ms delays between termination attempts
Files:
- \RobloxGuard.exe\ - Single-file executable
- \RobloxGuard.exe.sha256\ - SHA256 checksum
Usage
\
RobloxGuard.exe --uninstall
\\
Complete uninstall with no processes or files left behind.
v1.3.6 - Mutex Permission Handling
Fix: Handle Mutex Permission Issues
Problem: On some systems, the mutex existed but the current process couldn't access it (UnauthorizedAccessException). The app would say 'Monitor already running' even though no actual process was running.
Root Cause: Previously, any UnauthorizedAccessException was treated as 'someone else holds the mutex, so monitor is running'. But this could also indicate:
- Permission issues
- Different user session
- Corrupted mutex from system restart
Solution: When UnauthorizedAccessException occurs:
- Fall back to checking actual RobloxGuard processes
- If processes exist Monitor is running (legitimate permission issue)
- If NO processes exist Allow new monitor (false positive from broken mutex)
Changes:
- Gracefully handles UnauthorizedAccessException
- Validates with Process.GetProcessesByName as fallback
- Allows app to start when permission issues block mutex access
- Prevents getting stuck on 'Monitor already running'
Files:
- \RobloxGuard.exe\ - Single-file executable
- \RobloxGuard.exe.sha256\ - SHA256 checksum
Installation
Download and run. Auto-installs on first launch.
v1.3.5 - Proper Mutex-Based Deduplication
Fix: Proper Mutex-Based Process Locking
Problem: The previous mutex-based check using Mutex.OpenExisting() could return false positives. In some scenarios, the mutex would be held but the check would fail, causing the app to try to start a new monitor even though one was running.
Solution: Changed to use Mutex.WaitOne(100ms) instead:
- If we CAN acquire the mutex it's stale (no process holding it) allow new monitor
- If we CAN'T acquire the mutex within 100ms another process is actively holding it monitor is running, deduplicate
This is a much more reliable way to detect actual process ownership of the mutex.
Changes:
- Timeout-based mutex validation instead of just checking existence
- Detailed logging in MonitorStateHelper for debugging
- Double-checks with Process.GetProcessesByName for confidence
- Works reliably across different executable copies
- Properly detects and tolerates stale mutexes from crashed processes
Files:
- \RobloxGuard.exe\ - Single-file, self-contained executable
- \RobloxGuard.exe.sha256\ - SHA256 checksum
Installation
Download and run. Auto-installs on first launch.
v1.3.4 - Fix Stale Mutex Issue
Fix: Stale Mutex Blocking New Monitor Startup
Problem: When the monitor process crashed or was killed, the startup mutex remained held, preventing any future launches from starting a new monitor. The app would immediately exit.
Solution: MonitorStateHelper now validates that an actual RobloxGuard process is running before trusting the mutex. If the mutex exists but no process is running, a new monitor starts automatically.
Changes:
- Validates RobloxGuard process existence before trusting mutex
- Gracefully handles crashed/killed monitor processes
- Works reliably across different executable copies
- Prevents 'Monitor already running. Exiting.' false positives
Files:
- \RobloxGuard.exe\ - Single-file, self-contained executable (146.4 MB)
- \RobloxGuard.exe.sha256\ - SHA256 checksum for verification
Installation
Download \RobloxGuard.exe\ and run it. It will auto-install on first launch.
v1.3.3
Alert window beep sound notifications
v1.3.2 - Simplified X Alert Icon
Simplified alert icon to clean X symbol. Removed custom brain drawing for better maintainability. SHA256: 92F7FA6DDB8451E741CFD83842247ED7D76269BEB9B80D703BF2BA2092A2A0EC
v1.2.0 - Comprehensive Debug Logging
v1.2.0 - Comprehensive Debug Logging
What's New
- Detailed logging for troubleshooting: All game detection, blocking, and process termination events are now logged to
%LOCALAPPDATA%\RobloxGuard\launcher.log - Monitor crash diagnostics: Complete stack traces and error information are captured, making it easy to debug why the monitor might stop unexpectedly
- Robust AlertWindow handling: If the alert window fails to display, a fallback MessageBox appears with diagnostic information
- Enhanced file logging: All WinExe operations are logged to file since console output is not visible in Windows GUI apps
Why This Matters
Previously, when the monitor stopped after detecting a blocked game, there was no way to know what went wrong. Now you can check the debug log to see:
- Whether the game was detected (
DETECTED GAME JOIN) - Whether it was marked as blocked (
IS BLOCKED) - Whether the process was terminated successfully
- Any errors that occurred (including full stack traces)
Testing Instructions
- Download
RobloxGuard.exefrom this release - Run it to install (first run auto-starts the monitor)
- Try to join a blocked game
- Check
%LOCALAPPDATA%\RobloxGuard\launcher.logfor detailed diagnostics - Report any issues with the log contents
Files
RobloxGuard.exe(146 MB) - The applicationRobloxGuard.exe.sha256- SHA256 checksum for verification
SHA256 Checksum
729611CD21553343D180E688E70E3C401447AFC27A9371331F13D81F01A3CB79