Disconnettere le sessioni RDP rimaste aperte sul server

Quando si superano il numero massimo di connessioni contemporanee ai Servizi Terminal di Windows – che in modalità amministratore sono limitate a 2 – risulta impossibile ricollegarsi ed amministrare il server. Questo succede soprattutto quando vengono state lasciate aperte delle sessioni da alcuni utenti che non si disconnettono correttamente – sia deliberatamente chiudendo il client di Desktop Remoto senza effettuare il logoff, che involontariamente a causa della caduta della connessione.

Avviso di Servizi Terminal

Per ripristinare il servizio senza riavviare il server è necessario eseguire alcuni comandi, da console oppure tramite telnet/SSH.

Ottenere la lista delle sessioni aperte

Per prima cosa è necessario conoscere quali sessioni sono rimaste appese sul server.

QUERY SESSION /SERVER:nomeserver

Il risultato del comando è una tabella con tutte le sessioni del server, compreso la console e la sessione RDP riservata al login/logoff. L’opzione /server può essere omessa: nel caso viene eseguita la query in locale.

NOMESESSIONE NOMEUTENTE ID STATO TIPO PERIFERICA
console 0 Conn wdcon
rdp-tcp 65536 Attendi connessione rdpwd
9 ConnQ
>rdp-tcp#19 davidebia 10 Attivo rdpwd

Per le operazioni successive il valore da segnare è il nome della sessione, che nell’esempio corrisponde a rdp-tcp#19.

Forzare la disconnessione

A questo punto, conoscendo il nome delle sessioni da chiudere, è possibile procedere alla disconnessione, una alla volta.

LOGOFF nomesessione /SERVER:nomeserver

Viene eseguito un normale logoff, con salvataggio del profilo ed esecuzione degli script di logout – è normale che richieda qualche minuto per i profili di grosse dimensioni.

Bypassare firewall e protezioni da remoto

Eseguendo le operazioni descritte da LAN o in locale non dovrebbero esserci particolari difficoltà, invece se l’host da ripristinare è esposto su Internet è probabile che la porta UDP 135 del protocollo RPC sia chiusa da un firewall.

Errore 1722 durante la ricezione dei nomi sessione
Errore [1722]:Server RPC non disponibile.

La soluzione migliore per bypassare il problema è quella di progettare una VPN o di installare un server SSH. In questo modo è possibile eseguire i comandi come se fossimo in LAN o locale senza compromettere la sicurezza del server. Come soluzione di emergenza, è possibile tuttavia utilizzare alcuni espedienti:

  • Se è un server di posta (mail server), molto probabilmente è possibile creare degli account “eseguibili”, quindi creare un apposito script batch/WSH da caricare sul server.
  • Se è un server web, molto probabilmente sono presenti PHP, ASP o ASP.NET. Tutti questi linguaggi hanno la possibilità di eseguire comandi e leggere l’output.

In tutti i casi è fortemente consigliato proteggere l’esecuzione della procedura con login/password.

Lettera d’unità non assegnata e non modificabile

Problema: alcune unità disco non possiedono più la lettera di unità e non è possibile né assegnarla, né modificarla. Utilizzando Gestione Disco (diskmgmt.msc) la partizione viene rilevata e riconosciuta come integra, ma quando si tenta di assegnare la lettera d’unità la relativa opzione risulta disabilitata (grayed).

Problema con le lettera d’unità

Soluzione: molto probabilmente è stata modificata la tabella della partizioni inserendo un Partition ID non valido. Utilizzare un qualsiasi programma in grado di modificare la tabella e ripristinare i valori corretti (0B per FAT32 e 07 per NTFS).

Dettagli: questo problema può essere causato dalla disinstallazione di Norton GoBack quando l’unità non è collegata al sistema. GoBack modifica il tipo di partizione in 44 per tutti i dischi rigidi presenti, e ripristina il valore iniziale alla disinstallazione. Anche un virus o altro programma malevolo potrebbe modificare la tabella delle partizioni, rendendo inaccessibili i dischi una volta rimosso.

Approfondimenti:

Errore “Impossibile trovare il file specificato” durante l’installazione dei driver

Problema: durante la wizard di installazione di un driver per un nuovo hardware, o durante l’aggiornamento dei driver per l’hardware esistente, si ottene un errore al termine della procedura.

Impossibile trovare il file specificato

Messaggio di errore: la wizard “Installazione guidata nuovo hardware” termina con la dicitura “Errore durante l’installazione dell’hardware – Impossibile trovare il file specificato”.

Soluzione: la chiave di registro HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce è mancante. Tale chiave è necessaria durante il rilevamento delle periferiche Plug & Play.

  • Accedere al computer con i privilegi di amministratore
  • Aprire l’editor del registro di sistema – %windir%\regedit.exe
  • Navigare fino alla chiave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
  • Clic su Modifica > Nuovo > Chiave, quindi digitare RunOnce
  • Uscire da tutti i programmi e riavviare il computer

Errore 0x52F in Microsoft Update

Durante l’utilizzo di Microsoft Update, il nuovo strumento per eseguire gli aggiornamenti di vari prodotti Microsoft, può succedere che gli aggiornamenti che riguardano Office 2003 non vengano installati, mentre quelli di Windows si concludano correttamente.

Osservando la cronologia degli aggiornamenti, è sempre riportato l’errore 0x52F per tutti gli aggiornamenti di Office 2003 che si è tentato di installare.

Il problema è causato dalla copia locale dell’installazione (LIS – Local Installation Source) che viene appositamente lasciata dal programma di setup di Office per consentire la riparazione e la modifica dell’installazione senza bisogno del CD o del percorso di installazione originale.

LIS consente a Microsoft Update di scaricare solo i file strettamente necessari, contenendo la dimensione del download. Tuttavia se LIS è danneggiata o non più disponibile, mancheranno dei componenti indispensabili senza i quali l’aggiornamento fallisce.

Per risolvere il problema è necessario disabilitare LIS e scaricare nuovamente gli aggiornamenti da Microsoft Update (che ora dovrebbero essere di dimensione maggiore). Microsoft mette a disposizione un tool che cancella e disabilita LIS. Probabilmente al primo tentativo di aggiornamento si otterrà nuovamente l’errore, in quanto Microsoft Update potrebbe conservare ancora in cache i file che richiedono LIS. In questo caso è sufficiente riavviare e scaricare nuovamente gli aggiornamenti.

Debugging con la funzione dump e la console di Mozilla Firefox

Il sistema più semplice e diffuso per effettuare il debug di una applicazione JavaScript, è quello di piazzare un alert nel mezzo del codice sorgente, al fine di controllare il contenuto di alcune variabili.

alert("Hello Firefox");

Questo approccio, sicuramente immediato, purtroppo non può essere utilizzato in tutte le situazioni. Il classico esempio sono le richieste XMLHttpRequest negli script: la comparsa della finestra pop-up interrompe lo script finché non si preme il pulsante OK, e tutti gli eventi che occorrono nel frattempo – quali readyStateChange – non vengono gestiti, causando effetti imprevisti.

Per ottenere un monitoraggio molto più attendibile, si può utilizzare la console di Firefox, una caratteristica non molto conosciuta del browser di casa Mozilla, che richiede però alcuni interventi per essere utilizzata.

Avvio della console di Firefox

Innanzitutto la console di Firefox non va assolutamente confusa con la console degli errori, già abilitata di default in tutte le installazioni, ed accessibile attraverso il menù Strumenti. Si tratta di una vera e propria console, molto simile ad un terminale, che può essere usata anche per interagire con le sessioni aperte ed inviare comandi al browser.

Console di Firefox

Per avviare la console di Firefox, è necessario controllare che tutte le sessioni correnti siano chiuse, quindi riavviare il browser con il parametro -console. In Windows, si può utilizzare il prompt dei comandi oppure la finestra “Esegui” del menu start, e digitare il comando.

"%programfiles%\Mozilla Firefox\firefox.exe" -console

Se la console non dovesse aprirsi, controllate che il processo di Firefox non sia ancora in esecuzione (in Windows tramite Task Manager) ed eventualmente forzatene la chiusura. Per il futuro, per facilitare l’avvio della console, consiglio di creare un collegamento sul desktop.

Abilitazione della funzione window.dump

Per scrivere nella console si utilizza la funzione dump, che di default non è abilitata. Nella barra degli indirizzi è necessario accedere ad about:config ed aggiungere un nuovo valore booleano oppure modificare il file user.js nel proprio profilo.

browser.dom.window.dump.enabled = true

Una volta effettuata la modifica alla configurazione, è necessario riavviare nuovamente Firefox affinché abbia effetto.

Utilizzo della funzione window.dump

La sintassi è molto semplice ed è molto simile agli alert.

dump("Hello Firefox\n");

Come si può notare, è stato usato un carattere newline (capo riga) alla fine della stringa. Consiglio di aggiungerlo sempre, per rendere maggiormente leggibili i log sullo schermo della console.

Installare WP-Cache su Windows e IIS

WP-Cache è un ottimo plug-in per velocizzare WordPress, effettuando la cache delle pagine già servite in precedenza. Purtroppo non è ben progettato per IIS: dopo averlo installato, la pagina di amministrazione risulterà bianca, quando invece dovrebbe auto-configurarsi e mostrare delle opzioni.

Per renderlo funzionante su Windows ed in particolare IIS, è necessario effettuare alcune modifiche ai sorgenti e successivamente procedere alla configurazione manuale.

Modifiche ai sorgenti

Nel file /wp-content/plugins/wp-cache/wp-cache.php, dalla riga 491, la funzione wp_cache_check_link utilizza dei link simbolici.

function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;

if ( basename(@readlink($wp_cache_link)) != basename($wp_cache_file)) {
@unlink($wp_cache_link);
if (!@symlink ($wp_cache_file, $wp_cache_link)) {
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
}
return true;
}

I link simbolici non sono implementati in Windows, e vanno quindi rimosse le funzioni symlink e readlink. Consiglio di effettuare un semplice controllo sull’esistenza del file advanced-cache.php.

function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;

if(!file_exists($wp_cache_link))
{
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
return true;
}

Sempre nello stesso file, si utilizza la costante __FILE__

add_options_page('WP-Cache Manager', 'WP-Cache', 5, __FILE__, 'wp_cache_manager');

Questo può causare alcuni problemi con le barre rovesce dei percorsi, per cui consiglio di fornire solo il nome del file, dato che WordPress è in grado di ricostruire comunque il percorso corretto del plug-in.

add_options_page('WP-Cache Manager', 'WP-Cache', 5, basename(__FILE__), 'wp_cache_manager');

Nel file /wp-content/plugins/wp-cache/wp-cache-phase1.php, alla riga 23, si fa uso della variabile $_SERVER['REQUEST_URI'] che purtroppo in Windows contiene solo parte del permalink.

$key = md5($_SERVER['SERVER_NAME'].preg_replace('/#.*$/', '', $_SERVER['REQUEST_URI']).wp_cache_get_cookies_values());

Il valore corretto lo otteniamo concatenando $_SERVER['SCRIPT_NAME'] e $_SERVER['PATH_INFO']

$key = md5($_SERVER['SERVER_NAME'].preg_replace('/#.*$/', '', $_SERVER['SCRIPT_NAME'].$_SERVER['PATH_INFO']).wp_cache_get_cookies_values());

Per lo stesso motivo è da sistemare il file /wp-content/plugins/wp-cache/wp-cache.php, sostituendo tutte le occorrenze di $_SERVER['REQUEST_URI'].

echo '

';

In questo caso utilizziamo una soluzione standard, usata anche in altri plug-in, per indicare la pagina corrente.

echo '

';

L’operazione deve essere ripetuta su tutto il file, alle righe 253, 272, 305, 329, 351, 556, 590, 605 e 613.

Configurazione manuale

Dopo aver eseguito le modifiche ai sorgenti, è possibile procedere alla configurazione del plug-in

  • Copiare rinominandolo il file /wp-content/plugins/wp-cache/wp-cache-phase1.php in /wp-content/advanced-cache.php
  • Creare la cartella /wp-content/plugins/cache
  • Concedere i diritti di scrittura a IIS alla cartella /wp-content. Dopo la configurazione, sono sufficienti i permessi per la cartella /wp-content/plugins/cache e /wp-content/plugins/wp-cache ed il file /wp-content/wp-cache-config.php.
  • Modificare il file wp-config.php aggiungendo una costante
    define('WP_CACHE', true);

A questo punto, per far entrare in funzione il plug-in, non resta che accedere alla pagina di amministrazione, dove dovrebbero essere comparse tutte le opzioni di configurazione, ed attivare la cache con l’apposito pulsante.

Fonti di riferimento

Rinominare gli utenti in Windows XP Home Edition

In Windows XP Home Edition è particolarmente ostico rinominare un account utente, in quanto utilizzando la funzione di rinomina in “Account utente” del pannello di controllo in realtà si cambia solo il valore il nome completo (Full Name). Inoltre non è presente lo snap-in “Utenti e gruppi” (lusrmgr.msc), presente nella versione Professional, che consente di amministrare tutti gli utenti. Continua a leggere “Rinominare gli utenti in Windows XP Home Edition”

Accedere come Administrator in Windows XP

In Windows XP è stata introdotta una nuova schermata iniziale di accesso, dove vengono mostrati gli account presenti sul computer e dove viene richiesta l’eventuale password.

Schermata iniziale di Windows XP

In tale schermata viene sempre nascosto l’utente Administrator, a meno che Windows sia in esecuzione in modalità provvisoria oppure non esistano altri utenti con privilegi di amministratore (membri del gruppo Administrators).

In caso di emergenza, può essere necessario accedere temporaneamente con tale utente che, oltre ai normali diritti di amministratore, possiede ulteriori privilegi.

  • Tenere premuti i tasti CTRL e ALT
  • Premere il tasto CANC e rilasciarlo
  • Premere nuovamente il tasto CANC
  • Rilasciare tutti i tasti

Effettuando questa sequenza dovrebbe comparire la classica schermata di accesso, presente di default in Windows 2000 e nei computer facenti parte di un dominio, nella quale è possibile digitare il nome utente a piacere. La sequenza non funziona nel cambio rapido utente.

Aggiungi ai segnalibri/preferiti

Può essere interessante e utile fornire un link all’interno del proprio sito web in cui si propone di aggiungere la pagina nei segnalibri o nei favoriti di Internet Explorer.

Esistono notevoli differenze tra i vari browser per implementare questa funzione, che hanno favorito l’abuso di JavaScript e rendendo tali link completamente inaccessibili. Fortunatamente Opera ha proposto una soluzione semplice, basata su puro HTML.

Aggiungi ai segnalibri

Il segreto di questo link è l’attributo rel="sidebar" che indica al browser una relazione con i segnalibri. Recentemente è stato implementato anche in Firefox e negli altri software basati su Gecko. Internet Explorer e le versioni precedenti di Gecko (in particolare Mozilla Suite) ignorano completamente l’attributo e lo considerano un normale collegamento ipertestuale. Per risolvere non c’è altra soluzione che aggiungere un semplice JavaScript.

function addbookmark_click( )
{
if(self.external)
{
self.external.AddFavorite(this.href, this.title);
return false;
}
else if(self.sidebar)
{
self.sidebar.addPanel(this.title, this.href, "");
return false;
}
else return true;
}

function body_load( )
{
if(document.getElementById)
var link_addbookmark = document.getElementById("addbookmark");
else if(document.all)
var link_addbookmark = document.all["addbookmark"];

if(link_addbookmark)
link_addbookmark.onclick = addbookmark_click;
}

if(typeof self.addEventListener != "undefined")
self.addEventListener("load", body_load, false);
else if(typeof self.attachEvent != "undefined")
self.attachEvent("onload", body_load);

Il vantaggio di questa soluzione è di essere trasparente nei confronti di tutti gli User Agent che non supportano JavaScript, siano essi browser o lettori vocali.

Disabilitare le linee analogiche della borchia ISDN NT1 plus

La borchia NT1 plus (NT1+), utilizzata da Telecom Italia nella maggioranza delle installazioni ISDN, a differenza della normale borchia NT1, integra un Terminal Adapter (TA) con due uscite analogiche al quale possono essere collegati due telefoni BCA o centralini analogici.

I frequenti casi di blocco della borchia Telecom NT1 plus con centralini ISDN è molto spesso dovuto ad interferenze col Terminal Adapter. È consigliato in questi casi disabilitare il TA in entrata, in modo da lasciare il completo controllo delle chiamate in arrivo al centralino ISDN.

  • Collegare un telefono BCA con tastiera a toni in una qualsiasi delle uscite analogiche
  • Sollevare il ricevitore ed attendere il tono di urbana
  • Digitare #*##*# per entrare in programmazione ed attendere il tono di conferma
  • Digitare *19*0# per disabilitare la prima uscita ed attendere la voce di conferma “Configurazione accettata”
  • Digitare *29*0# per disabilitare la seconda uscita ed attendere la voce di conferma “Configurazione accettata”
  • Riagganciare il ricevitore e scollegare il telefono

Le linee analogiche ora sono disattivate in ingresso ed un eventuale telefono BCA collegato non suonerà al ricevimento di una chiamata. È possibile continuare ad utilizzare le linee analogiche per telefonate in uscita. Per riabilitare le linee analogiche in ingresso, ripetere la procedura utilizzando i codici *19*1# e *29*1#. Se dovessero permanere problemi con la borchia, consiglio di richiedere la sostituzione della NT1 plus con la più semplice NT1.