Formazione e Tecnologia
Il welcome message di Windows.

Il welcome message di Windows.

Inserire un messaggio di benvenuto, con richiesta di conferma, prima della login al computer può essere molto comodo per diverse ragioni, come il rammentare agli utenti l’esistenza della policy aziendale oppure comunicare l’avvicinarsi di interventi di manutenzione.

Negli ultimi anni questo tipo di messaggio ha assunto il nome di “Legal Message”, anche se la sua denominazione originaria è quella di “Welcome Message”.

Il “Legal” nasce dal fatto che se il messaggio richiede l’accettazione di qualche policy prima dell’accesso, se l’utente non preme il bottone di OK non può utilizzare il computer; pertanto, il soggetto che non concorda con la comunicazione è libero di spegnere il computer e discutere la situazione nelle opportune sedi.

Il Group Policy di Microsoft offre la possibilità di impostare queste note a livello centralizzato e di propagarle ai computer quando si collegano al dominio; tuttavia, può accadere che non esista un Dominio Microsoft o che non si intenda utilizzare questo strumento.

La configurazione di questi messaggi avviene attraverso la modifica di due chiavi dei registri di Microsoft Windows, un’operazione che può essere svolta attraverso un RMM con il semplice requisito che il computer sia accesso.

Le chiavi dei registri

Per attivare la visualizzazione del messaggio di benvenuto è necessario ricorrere ai registri di Microsoft Windows, il messaggio si attiva se è presente del testo da visualizzare, in caso contrario non si presenta.

I due valori di interesse sono nel percorso:

HKEY_LOCAL_MACHINE:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

I valori sono LegalNoticeCaption, che costituisce il titolo della finestra e LegalNoticeText, che contiene il messaggio da distribuire.

LEGGI ANCHE -  La necessità della sicurezza di accesso si perde nel tempo

La lunghezza del messaggio subisce delle variazioni se attivato con un RMM, ad esempio con Datto RMM la dimensione massima di un campo di testo è di 255 caratteri, nel caso specifico la limitazione può essere superata creando dei campi aggiuntivi per appendere altro testo o allegando al componente un file di testo contenente il messaggio da trasferire nei registri. La dimensione massima dei campi di testo nei registri è di 16.384 caratteri, per questioni di leggibilità si sconsiglia di superare i 1024 caratteri.

La procedura

La modifica delle chiavi del registro utilizza il cmdlet New-ItemProperty di Powershell, che va a sovrascrivere il valore delle chiave o a creare la chiave se non esiste.

Nel caso di una procedura eseguita da RMM la soluzione più affidabile è quella di eseguire lo script come monitor, o comunque in un ciclo continuo a distanza di una o due ore, in questo modo si avrà la certezza che l’operazione sia stata eseguita su tutti i computer accesi.

Dopo la prima esecuzione e l’applicazione della modifica dei valori, la procedura si limita a controllare che i valori inseriti in input nel componente siano uguali a quelli presenti nei registri, in caso contrario viene eseguita la modifica dei registri con i nuovi valori.

Finita la necessità di avere il messaggio di benvenuto, sarà sufficiente impostare il componente per eseguire la disattivazione, andando a cancellare il contenuto dei due valori.

				
					<#
.SYNOPSIS
Imposta il messaggio di benvenuto o "legal message" prima della login al computer a cui l'utente deve dare conferma.
Il titolo può avere una lunghezza massima di 100 caratteri e il corpo del messaggio di 1024. Sono ammessi solo 
caratteri alfanumereci e _ - . , ; :
.DESCRIPTION
Permette di associare un messaggio prima della login al computer, 
l'utente deve dare conferma attraverso il bottone OK.
La configurazione è realizzata impostanto le corrispondenti chiavi dei registri di sistema.
.PARAMETER LoginCaption
Titolo della finestra messaggio (MAX 100 caratteri), sono permessi sono i caratteri: a-zA-Z0-9_-.,;:
.PARAMETER LoginText
Testo del messaggio (MAX 255 caratteri), sono permessi sono i caratteri: a-zA-Z0-9_-.,;:
.PARAMETER LoginTextAppend1
Testo addizionale del messaggio (MAX 255 caratteri), sono permessi sono i caratteri: a-zA-Z0-9_-.,;:
.PARAMETER LoginTextAppend2
Testo addizionale del messaggio (MAX 255 caratteri), sono permessi sono i caratteri: a-zA-Z0-9_-.,;:
.PARAMETER LoginTextAppend3
Testo addizionale del messaggio (MAX 255 caratteri), sono permessi sono i caratteri: a-zA-Z0-9_-.,;:
.PARAMETER Action
Azione da eseguire sul messaggio di benevenuto (Attiva, Disattiva).
.EXAMPLE
-
.LINK
www.epolenghi.it
#>

# DEFINIZIONI DELLE FUNZIONI
# Generazione evento di errore per i monitor Datto RMM
# FRMMErrorLevel: red -> chiude con errore; debug -> non chiude
function set-ErrorTrap {
  param (
    [string]$FErrorMessage,
    [string]$FRMMErrorLevel,
    [string]$FDiagnostic
  )
  write-host "<-Start Result->"
  Write-Host "EM = $FErrorMessage"
  Write-host "<-End Result->"
  if ($FDiagnostic -ne "") {
    write-host  "<-Start Diagnostic->"
    Write-Host $FDiagnostic
    write-host "<-End Diagnostic->"
  }
  switch ($FRMMErrorLevel) {
    red {  
      exit 1
    }
    default {
      write-host "DEBUG $FErrorMessage"
    }
  }  
}

# Lettura campi nei registi
function Get-RegistryValue {
  param (
    [string]$FPath,
    [String]$FField
  )
  try {
    Get-ItemPropertyValue -Path $FPath -Name $FField -ErrorAction:Ignore    
  }
  catch {}
}

# scrittura campi nei registri
function Set-RegistryValue {
  param (
    [String]$FPath,
    [string]$FField,
    [String]$FValue
  )
  Set-ItemProperty -Path $FPath -Name $FField  -Value $FValue -Force | Out-Null
}

# Acquisizione parametri da Datto RMM
$LoginCaption = $ENV:LoginCaption
$LoginText = $ENV:LoginText
$LoginTextAppend1 = $ENV:LoginTextAppend1
$LoginTextAppend2 = $ENV:LoginTextAppend2
$LoginTextAppend3 = $ENV:LoginTextAppend3
$Action = $ENV:Action

# Percorso dei valori dei registri
$LoginPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

# Controllo di consistenza dei parametri
If ("Attiva", "Disattiva" -NotContains $Action) {
  set-ErrorTrap -FErrorMessage "ERRORE - Parametro ACTION inconsistente." -FRMMErrorLevel "red" -FDiagnostic ""
}
If ((([string]::IsNullOrEmpty($LoginText) -or [string]::IsNullOrEmpty($LoginCaption))) -and $Action -eq "Attiva") {
  set-ErrorTrap -FErrorMessage "ERRORE - Parametri LOGINCAPTION e/o LOGINTEXT inconsistenti." -FRMMErrorLevel "red" -FDiagnostic ""
}

# Controllo di dimensione dei campi di testo
if($LoginText.length -gt 255) {
  set-ErrorTrap -FErrorMessage "ERRORE - Parametro LOGINTEXT troppi caratteri." -FRMMErrorLevel "red" -FDiagnostic ""
}
if($LoginText.length -gt 100) {
  set-ErrorTrap -FErrorMessage "ERRORE - Parametro LOGINCAPTION troppi caratteri." -FRMMErrorLevel "red" -FDiagnostic ""
}

$LoginText += $LoginTextAppend1 + " " + $LoginTextAppend2 + " " + $LoginTextAppend3

if ($LoginText  -match "[^a-zA-Z0-9_-.,;:]") {
  set-ErrorTrap -FErrorMessage "ERRORE - Parametro LOGINTEXT contiene caratteri non attesi"
}
if ($LoginCaption  -match "[^a-zA-Z0-9_-.,;:]") {
  set-ErrorTrap -FErrorMessage "ERRORE - Parametro LOGINCAPTION contiene caratteri non attesi"
}

# Lettura dei valori esistenti nei registri
$RCaption = Get-RegistryValue -FPath $LoginPath -FField "LegalNoticeCaption" 
$RText = Get-RegistryValue -FPath $LoginPath -FField "LegalNoticeText"

Switch ($Action) {
  Attiva {
    if (!([string]::IsNullOrEmpty($RCaption))) {
      Set-RegistryValue -FPath $LoginPath -FField "LegalNoticeCaption" -FValue $LoginCaption
    }
    if (!([string]::IsNullOrEmpty($RText))) {
      Set-RegistryValue -FPath $LoginPath -FField "LegalNoticeText" -FValue $LoginText
    }
  }
  Disattiva {
    if (([string]::IsNullOrEmpty($RCaption)) -or $RCaption -ne $LoginCaption) {
      Set-RegistryValue -FPath $LoginPath -FField "LegalNoticeCaption" -FValue ""
    }
    if (([string]::IsNullOrEmpty($RText)) -or $RCaption -ne $LoginText) {
      Set-RegistryValue -FPath $LoginPath -FField "LegalNoticeText" -FValue ""
    }
  }
}
				
			

Per maggiori informazioni sull’uso e la realizzazione degli script di automazione leggi questo articolo e contattaci senza impegno.

I componenti distribuiti sono forniti senza alcuna garanzia. Non vi sono garanzie che il software soddisfi le vostre esigenze o sia esente da errori. In nessun caso gli sviluppatori saranno responsabili per eventuali danni.

I componenti proposti sono stati collaudati nel modo più esaustivo possibile e sono utilizzati in modo regolare in ambienti di produzione, durante il loro utilizzo non si sono verificate anomalie di funzionamento.

Archivi
Prossimi eventi

Non ci sono eventi imminenti.

Iscriviti alla nostra Newsletter
Seleziona lista (o più di una):
Manteniamo i tuoi dati privati e NON li condividiamo con terze parti. Per maggiori informazioni, consulta la nostra Privacy Policy.
Confermo di aver letto la Policy sul trattamento dei dati
Il misticismo della Tuscia e le curatrici

Un progetto parallelo ambientato nella Tuscia Sutrina: piante da giardino locali, tecniche di coltivazione, storia e leggende del territorio, racconti fantasy a tema. Botanica, cultura e tradizioni in un unico spazio.

A volte basta una breve pausa per ritrovare la concentrazione: qualche minuto tra verde e fantasia può aiutare a tornare al lavoro con nuove idee.

Visita il sito