Strumento open source per inviare notifiche aziendali obbligatorie su rete locale Windows.
Messaggi a schermo intero che i dipendenti devono confermare con "HO LETTO". Nessun server, nessun cloud, nessun database: funziona su cartella condivisa SMB.
MustRead Γ¨ un sistema di messaggistica interna per ambienti Windows aziendali che garantisce la conferma di lettura obbligatoria dei messaggi urgenti.
Quando un amministratore invia un messaggio tramite MustRead, sul PC del destinatario appare una finestra a schermo intero non chiudibile β senza pulsante X, senza ESC, senza Alt+F4 β che l'utente puΓ² chiudere solo cliccando "HO LETTO".
Perfetto per:
- π’ Comunicazioni urgenti aziendali (manutenzioni, allarmi, avvisi IT)
- π Ambienti industriali e manifatturieri con PC condivisi
- π« Scuole e universitΓ con laboratori informatici
- π₯ Strutture sanitarie con postazioni multiple
- π₯οΈ Server Terminal Services / RDP con utenti multipli
| FunzionalitΓ | Descrizione |
|---|---|
| πΊ Notifica fullscreen | Occupa tutto lo schermo, sempre in primo piano |
| β Conferma obbligatoria | L'utente deve cliccare "HO LETTO" per chiudere |
| π€ Invio per utente | Messaggi diretti a un utente Windows specifico |
| π₯οΈ Invio per computer | Messaggi diretti a un PC specifico |
| π£ Broadcast | Invio a tutti gli utenti connessi contemporaneamente |
| π Storico completo | Log di messaggi inviati, mostrati e confermati |
| π Offline delivery | I messaggi restano in coda se il PC Γ¨ offline |
| π§ RDP / Terminal Server | Funziona nelle sessioni Remote Desktop |
| π Autorizzazione mittenti | Solo gli utenti autorizzati possono inviare messaggi |
| βοΈ Zero dipendenze | Solo una cartella SMB condivisa, nessun server |
| π Avvio automatico | Si avvia con Windows tramite registro HKCU |
βββββββββββββββββββ \\SERVER\MustRead\ βββββββββββββββββββ
β PC MITTENTE β ββββ inbox/users/... ββββΆ β PC DESTINATARIOβ
β β β β
β [INVIA MSG] β cartella SMB β βββββββββββββ β
β β β βMESSAGGIO β β
βββββββββββββββββββ β βIMPORTANTE β β
β β β β
β β[HO LETTO] β β
β βββββββββββββ β
βββββββββββββββββββ
- Il mittente apre MustRead dalla tray icon e scrive il messaggio
- Sceglie il destinatario: utente specifico, PC specifico, oppure tutti
- Il messaggio viene scritto come file JSON nella cartella condivisa
- L'agent sul PC destinatario rileva il file (polling ogni N secondi)
- Appare la finestra fullscreen β l'utente non puΓ² ignorarla
- Al click su "HO LETTO" il messaggio viene registrato nello storico
- Sistema operativo: Windows 10 / Windows 11 (x64)
- Runtime: .NET 8 oppure build self-contained (incluso)
- Rete: Cartella condivisa SMB accessibile in lettura/scrittura da tutti i PC
- Permessi: Nessun privilegio di amministratore richiesto per la ricezione
Scarica MustRead.exe dalla pagina Releases e copialo su ogni PC. Non richiede l'installazione di .NET.
git clone https://github.com/pikappa13/mustread.git
cd mustread/src/MustRead.App
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=trueCrea una cartella condivisa su un server o PC accessibile in rete:
\\SERVER\MustRead\
Struttura creata automaticamente da MustRead al primo avvio:
\\SERVER\MustRead\
βββ clients\ β presenza online dei client (heartbeat)
βββ inbox\
β βββ users\ β messaggi per utente (es. DOMAIN_mario)
β βββ computers\ β messaggi per computer (es. PC-UFFICIO01)
β βββ all\ β messaggi broadcast per tutti
βββ history\
β βββ sent.jsonl β log messaggi inviati
β βββ shown.jsonl β log messaggi mostrati a schermo
β βββ read.jsonl β log conferme di lettura
βββ config\
βββ authorized_senders.json β utenti autorizzati all'invio
Al primo avvio, MustRead apre automaticamente la schermata di configurazione.
In alternativa, crea C:\ProgramData\MustRead\settings.json:
{
"serverPath": "\\\\SERVER\\MustRead",
"enableSender": true,
"enableReceiver": true,
"pollingSeconds": 3,
"allowSendToAll": true,
"applicationName": "MustRead"
}| Parametro | Descrizione |
|---|---|
serverPath |
Percorso UNC della cartella condivisa |
enableSender |
Abilita la schermata di invio (solo per admin) |
enableReceiver |
Abilita la ricezione notifiche in background |
pollingSeconds |
Frequenza di controllo nuovi messaggi (secondi) |
allowSendToAll |
Abilita il broadcast a tutti gli utenti |
applicationName |
Nome visualizzato nell'interfaccia |
Crea \\SERVER\MustRead\config\authorized_senders.json:
[
"DOMAIN\\admin1",
"DOMAIN\\it_support"
]Se il file non esiste, chiunque con enableSender: true puΓ² inviare messaggi.
Apri Impostazioni dalla tray icon e spunta "Avvia automaticamente con Windows".
MustRead aggiunge una voce in HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run β senza privilegi di amministratore.
- Doppio clic sull'icona MustRead nella tray (in basso a destra)
- Seleziona uno o piΓΉ destinatari dalla lista degli utenti online
- Scrivi il testo del messaggio
- Clicca INVIA
I destinatari online ricevono la notifica entro pollingSeconds secondi.
I destinatari offline ricevono il messaggio al prossimo avvio di MustRead.
MustRead gira in background nella system tray. Quando arriva un messaggio:
- Appare automaticamente una finestra a schermo intero
- Non puΓ² essere chiusa con ESC, Alt+F4 o il pulsante X
- L'utente deve cliccare "HO LETTO" per confermare e chiudere
- Se arrivano piΓΉ messaggi, vengono mostrati in sequenza
Clic destro sull'icona tray β Storico
Tre tab: messaggi inviati, messaggi mostrati, messaggi confermati.
MustRead Γ¨ compatibile con sessioni Remote Desktop (RDP) e Terminal Server:
- Funziona in ogni sessione RDP attiva purchΓ© MustRead sia avviato nella sessione
- Rileva automaticamente il tipo di sessione (
Local/RDP) - In ambienti Terminal Server, usa Group Policy o logon script per avviare MustRead per ogni utente
- Il
clientIdinclude ilsessionIdper distinguere sessioni multiple dello stesso utente
Vedere docs/rdp-deployment.md per le istruzioni dettagliate.
Q: Serve un server dedicato?
A: No. Basta una cartella condivisa Windows su qualsiasi PC o NAS della rete.
Q: Funziona senza Internet?
A: Sì, MustRead funziona interamente sulla rete locale (LAN). Non richiede connessione Internet.
Q: Un utente puΓ² ignorare il messaggio?
A: La finestra Γ¨ fullscreen, sempre in primo piano, senza pulsanti di chiusura. Un utente tecnico con accesso al Task Manager puΓ² terminare il processo, ma questo viene documentato nelle limitazioni.
Q: Funziona con Active Directory?
A: SΓ¬. MustRead usa Environment.UserDomainName e Environment.UserName β compatibile con utenti di dominio AD.
Q: Quanti PC supporta?
A: Non c'Γ¨ un limite tecnico. Le prestazioni dipendono dalla velocitΓ della rete e del file server.
Q: I messaggi sono cifrati?
A: No. I messaggi sono file JSON in chiaro. La sicurezza Γ¨ delegata ai permessi NTFS della cartella condivisa. Non usare MustRead per informazioni riservate.
Q: Funziona su Windows 7?
A: No. Richiede Windows 10 o Windows 11 con .NET 8. Per Windows 7 sarebbe necessario un porting a .NET Framework 4.8.
- β Non funziona se il PC Γ¨ spento o ibernato
- β Non mostra messaggi sulla schermata di login Windows
- β Non bypassa la lock screen (schermo bloccato)
- β Un amministratore puΓ² terminare il processo MustRead
- β Non Γ¨ un sistema di emergenza certificato
- β I messaggi sono in chiaro (file JSON non cifrati)
β οΈ Per RDP: l'agent deve girare dentro la sessione dell'utente
Vedere docs/limitations.md per i dettagli.
mustread/
βββ src/
β βββ MustRead.App/ β Applicazione principale (WinForms .NET 8)
β β βββ Forms/ β UI: SenderForm, AlertForm, HistoryForm, SettingsForm
β β βββ Services/ β Business logic: invio, ricezione, storico, registro
β β βββ Models/ β Modelli dati: AlertMessage, ClientInfo, AppSettings
β β βββ Utils/ β FileLockHelper, JsonHelper, UiHelper
β βββ MustRead.Tests/ β Suite di test xUnit (79 test)
βββ examples/ β File di configurazione di esempio
βββ docs/ β Documentazione setup, RDP, limitazioni
βββ README.md
βββ LICENSE
- Installer MSI / MSIX per deployment aziendale
- Icona personalizzata per tipo messaggio (info / warning / critical)
- Suono di notifica configurabile
- Timeout opzionale (auto-conferma dopo N secondi)
- Invio a gruppi / reparti configurabili
- Dashboard storico con filtri, ricerca e statistiche
- Esportazione storico in CSV / Excel
- Integrazione Active Directory (lista utenti automatica)
- Backend HTTP opzionale (alternativa alla cartella SMB)
- Servizio Windows per avvio prima del login utente
- Firma digitale dell'eseguibile
Pull request benvenute! Per modifiche significative, apri prima una issue per discutere l'approccio.
git clone https://github.com/pikappa13/mustread.git
cd mustread/src/MustRead.Tests
dotnet test # 79 test, tutti devono passareDistribuito sotto licenza MIT. Vedere LICENSE per i dettagli.
Sviluppato da Patrick Battistini
MustRead β PerchΓ© ogni messaggio importante merita di essere letto.