the fly on the net » Articoli »
Scritto da Davide Bia in Sistemi Windows 6 ottobre 2008
Se intendiamo utilizzare una politica di backup basata su script batch pianificati, in cui si vuole recuperare versioni di file fino ad una settimana, risulta indispensabile conoscere che giorno siamo per differenziare il nome della cartella in cui eseguire il salvataggio.
robocopy C:\ D:\backup\lun /MIR
Purtroppo a partire da Windows XP, il comando date /T oppure la variabile di ambiente %date% di default, nella versione italiana, restituiscono la data nel formato gg/mm/aaaa (06/10/2008) al posto del precedente ggg gg/mm/aaaa (lun 06/10/2008), che conteneva il giorno della settimana.
Per ripristinare il vecchio comportamento, è sufficiente modificare il formato della data breve dalle Opzioni internazionali del pannello di controllo.

Su Windows Vista la sintassi del formato è cambiata in ddd dd/mm/yyyy ed è stata leggermente modificata la finestra delle opzioni. In entrambi i casi, si andrà a modificare una chiave di registro del profilo utente.
HKEY_CURRENT_USER\Control Panel\International\sShortDate
Una volta effettuata la modifica, diventa semplice nel file batch ottenere una nuova variabile ed eseguire il backup.
set weekday=%date:~0,3%
robocopy C:\ D:\backup\%weekday% /MIR
In alternativa, se non fosse possibile modificare il valore tramite l’interfaccia utente, è possibile utilizzare la linea di comando.
reg add "HKCU\Control Panel\International" /f /v sShortDate /t REG_SZ /d "ggg gg/mm/aaaa"
Come ultima opzione, se per qualunque motivo non fosse possibile modificare il formato della data breve, è possibile avviare una sessione DOS in modalità legacy, ma è necessario un codice leggermente più complesso per estrapolare l’informazione che ci interessa.
@echo off
echo.|command /C date|find "data corrente" > "%tmp%\weekday.tmp"
for /f "tokens=5" %%a in ('type "%tmp%\weekday.tmp"') do set weekday=%%a
del "%tmp%\weekday.tmp"
Attenzione: l’esempio è scritto per Windows XP versione italiana. Per altre versioni o lingue è necessario adattare il codice.
Scritto da Davide Bia in Sistemi Windows 3 ottobre 2008
In uno script batch (con estensione BAT o CMD) a volte può essere necessario conoscere la data ed ora correnti. Le variabili di ambiente %date% e %time% contengono queste informazioni, ma in alcuni casi non possono essere utilizzate direttamente. Ad esempio, utilizzando xcopy e volendo ottenere un file di log di tutto quello riportato sullo schermo, si ottiene un errore.
xcopy C:\dati C:\backup /E /Y /I /H /O > C:\log\%date%.log
Impossibile trovare il percorso specificato
Questo perché si tenta di creare il file C:\log\03/10/2008.log, che contiene il carattere / non valido per i nomi di file. La soluzione ideale è di usare il formato ISO 8601 aaaa-mm-gg (es. 2008-10-03), che oltre a poter essere utilizzato come nome di file, risulta comodo per tenere in ordine cronologico i file. Per ottenere questo risultato possiamo creare una nuova variabile estrapolando le informazioni dalla data corrente, quindi successivamente la usiamo a piacere all’interno dello script.
set today=%date:~6,4%-%date:~3,2%-%date:~0,2%
xcopy C:\dati C:\backup /E /Y /I /H /O > C:\log\%today%.log
Attenzione: nell’esempio viene estrapolata la data ISO a partire dalla data di sistema, che viene proposta di default, nelle versioni in italiano, nel formato gg/mm/aaaa. In un sistema con altra lingua, potrebbe essere usato un formato differente ed è necessario adattare di conseguenza il codice.
L’operazione analoga possiamo eseguirla anche con la variabile %time%, per ignorare i millisecondi non previsti dallo standard ISO.
set datetime=%date:~6,4%-%date:~3,2%-%date:~0,2%T%time:~0,2%%time:~3,2%%time:~6,2%
xcopy C:\dati C:\backup /E /Y /I /H /O > C:\log\%datetime%.log
Scritto da Davide Bia in PHP 30 settembre 2008
Come per il famoso link “Edit this”, tradotto normalmente in “Modifica”, può essere comodo inserire nel proprio tema un link per scrivere un nuovo articolo o una nuova pagina.
Per quanto riguarda gli articoli la soluzione è semplice, e si risolve con qualche linea di codice.
if(current_user_can('publish_posts'))
echo '<a href="'.get_bloginfo('wpurl').'/wp-admin/post-new.php">'.__('Write article').'</a>';
Per quanto riguarda invece le pagine, può essere interessante utilizzare un codice più complesso, per aggiungere una nuova pagina che abbia la corrente come pagina madre. Per fare ciò è necessario creare una pagina vuota utilizzando la funzione wp_insert_post, passando il parametro post_parent che deve corrispondere all’ID della pagina corrente, quindi redirigere l’utente al back-end.
if(current_user_can('publish_pages'))
{
$post_parent = $post->ID;
if($_GET['publish_subpage'])
{
$newpost = array(
'post_content' => '<p> </p>',
'post_parent' => $post_parent,
'post_status' => 'draft',
'post_title' => '',
'post_type' => 'page'
);
$newpost_ID = wp_insert_post($newpost);
if($newpost_ID)
header('Location: '.get_bloginfo('wpurl').'/wp-admin/page.php?action=edit&post='.$newpost_ID);
else header('Location: '.get_permalink($post->ID));
}
else
{
$publish_link = get_permalink($post->ID);
if(strpos('?', $publish_link))
echo '<a href="'.$publish_link.'&publish_subpage=yes">'.__('Write page').'</a>';
else echo '<a href="'.$publish_link.'?publish_subpage=yes">'.__('Write page').'</a>';
}
}
Questa soluzione prevede la creazione di un link che richiama la stessa pagina con in aggiunta il parametro publish_subpage=yes.
Scritto da Davide Bia in Sistemi Windows 30 luglio 2008
Problema: durante l’installazione di un applicativo in lingua inglese su sistema operativo in italiano, la procedura si interrompe con un messaggio di errore.

Error 1609. An error has occoured when applying security settings.
NETWORK SERVICE is not a valid user or group. This could be
a problem with the package, o a problem connecting to a
domain controller on the network. Check your network
connection and click Retry, or Cancel to end the install.
Dettagli: nelle installazioni di Windows in lingua italiana l’utente built-in NETWORK SERVICE è stato rinominato in SERVIZIO DI RETE. Tutti i programmi di installazione che fanno riferimento all’utente NETWORK SERVICE sono destinati a generare un errore e/o non applicare correttamente tutti i diritti necessari all’esecuzione dell’applicazione.
Soluzione: è sufficiente creare un nuovo gruppo locale denominato NETWORK SERVICE ed inserire come unico membro l’utente SERVIZIO DI RETE.

Nuovo gruppo NETWORK SERVICE
Così facendo l’installer dovrebbe procedere senza ulteriori errori e le impostazioni di sicurezza applicate per NETWORK SERVICE saranno valide anche per SERVIZIO DI RETE.
Scritto da Davide Bia in Recupero dati 12 giugno 2008
Problema: in alcuni casi l’aggiornamento del BIOS nel portatile Acer Aspire serie 7720 eseguito da Windows Vista può non andare a buon fine, con un messaggio di errore VERIFY FAILED appena dopo l’avvio della procedura e computer bloccato. Dopo il reset il portatile non si riaccende.
Soluzione: è necessario effettuare il ripristino del BIOS tramite la procedura di emergenza.
- Scollegare il portatile dall’alimentatore esterno e rimuovere la batteria
- Scaricare il BIOS dal sito di assistenza Acer
- Estrarre dal zip il file con estensione FD e rinominare come ICL50HW.fd , quindi salvare all’interno di un floppy da 3.5″ oppure masterizzare su CD-ROM. Non è necessario inserire ulteriori file o rendere avviabili i supporti.
- Collegare un floppy drive USB oppure inserire il CD nel lettore aiutandosi con una graffetta
- Premere il tasto Fn+Esc e mantenerli premuti
- Ricollegare l’alimentatore esterno
- Premere il tasto di accensione
- Rilasciare i tasti Fn+Esc
Il portatile dovrebbe avviarsi e rimanere con lo schermo nero, quindi iniziare a leggere dal supporto. A procedura ultimata (circa 5 minuti) si spegnerà automaticamente.
Scritto da Davide Bia in Sistemi Windows 5 giugno 2008
Problema: abilitando nel BIOS le funzioni AHCI oppure RAID del controller Serial ATA integrato nelle schede madri dotate dei nuovi chipset Intel, si ottiene un errore STOP 0×0000007B (INACCESSIBLE_BOOT_DEVICE) al successivo avvio di Windows XP. Ripristinando la modalità compatibile IDE il computer torna ad avviarsi correttamente.
Dettagli: l’errore 0×7B compare in quanto Windows non contiene i driver per i controller SATA in modalità AHCI/RAID - di conseguenza non è più in grado di accedere ai file dell’installazione, fondamentali per l’avvio.
Soluzione: è necessario procedere ad alcuni passaggi per installare i driver Intel necessari. Per eseguire l’operazione sono necessari i diritti amministrativi.
- Scaricare dal sito Intel il software Matrix Storage Manager
- Estrarre i driver dal file appena scaricato aggiungendo l’opzione -a (es. iata82_cd.exe -a)
- Aprire Gestione periferiche in Gestione computer (compmgmt.msc)
- Espandere la voce Controller IDE ATA/ATAPI
- Avviare la procedura per l’aggiornamento dei driver del controller SATA - il nome riportato varia a seconda della versione del chipset in uso - es. Intel(R) ICH9/DO/DH 4 port Serial ATA Storage Controller 1 - 2920 è relativo al chipset ICH9.
- Selezionare l’aggiornamento manuale, quindi specificare il percorso %PROGRAMFILES%\Intel\Intel Matrix Storage Manager\Driver oppure Driver64 per sistemi 64bit. Selezionare la versione AHCI o RAID relativa alla stessa famiglia del chipset attualmente in uso. È normale che compaia una finestra di avvertimento che ne sconsiglia l’installazione in quanto AHCI/RAID non è ancora attivo.
- Riavviare il computer
- Accedere al BIOS ed attivare la funzione AHCI oppure RAID.
- Installare Intel Matrix Storage Manager nel caso si voglia monitorare lo stato dei dischi in modalità RAID.
Soluzioni alternative: è possibile avviare il computer dal CD-ROM di installazione, premere F6 all’inizio del setup e salvare i file della cartella Driver all’interno di un floppy, quindi al momento della richiesta di dove installare Windows, premere R per riparare l’installazione rilevata. Questa soluzione ha lo svantaggio di azzerare gli aggiornamenti installati e reimposta la product-key.
Scritto da Davide Bia in Sistemi Windows 16 maggio 2008
Problema: alcuni applicativi non usano OpenOffice Writer per aprire i file RTF dei report o delle stampe generate dal programma stesso, anche se l’estensione RTF risulta essere associata correttamente ad OpenOffice.

Soluzione: è necessario modificare un valore nel registro di Windows. Per eseguire l’operazione sono necessari i diritti amministrativi.
- Eseguire %windir%\regedit.exe
- Navigare alla chiave HKEY_CLASSES_ROOT\.rtf
- Modificare il valore Predefinito in OpenOffice.org.rtf
Dettagli: questo problema capita frequentemente installando un programma che associa l’estensione RTF a sé, per poi successivamente modificare l’associazione utilizzando “Opzioni cartella” del pannello di controllo oppure il menu contestuale “Apri con…”. Così facendo alcuni valori nel registro non sono modificati ed alcuni programmi potrebbero continuare ad utilizzare la precedente associazione.
Scritto da Davide Bia in Sistemi Windows 12 maggio 2008
Problema: dopo l’aggiornamento ad Internet Explorer 7, nel menu Start di Windows XP l’icona relativa al collegamento ad Internet Explorer 7 risulta mancante.

Soluzione: è necessario modificare un valore nel registro di Windows per ripristinare la corretta icona da visualizzare nel menu Start. Per eseguire l’operazione sono necessari i diritti amministrativi.
- Eseguire %windir%\regedit.exe
- Navigare alla chiave HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\DefaultIcon
- Modificare il valore di default in %ProgramFiles%\Internet Explorer\iexplore.exe,-32528
- Riavviare il computer
Scritto da Davide Bia in Sistemi Windows 30 aprile 2008
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.

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.
Scritto da Davide Bia in Sistemi Windows 23 aprile 2008
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).

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: