Archives For Ricerca e Sviluppo

Più che un articolo complesso, una pillola che potrebbe tornare utile nelle ricerche di Google (e per imperitura memoria del sottoscritto). Si parla ancora di Sysprep, nonostante io abbia già pubblicato qualcosa in merito da poco, con però un riferimento specifico a Windows 10 (in attuale versione Creators Update 1703). Una macchina nuova appena preparata e pronta per essere “chiusa e resa clonabile“, un errore a video che lascia molto spazio a imprecazioni variopinte:

Sysprep was not able to validate your Windows Installation (Bitlocker)

Io quel log l’ho aperto, e ci ho trovato una serie di informazioni anomale, perché relative al Bitlocker mai configurato sul PC:

2017-07-25 10:59:42, Info [0x0f0080] SYSPRP ActionPlatform::LaunchModule: Found 'ValidateBitLockerState' in C:\Windows\System32\BdeSysprep.dll; executing it
2017-07-25 10:59:42, Error SYSPRP BitLocker-Sysprep: BitLocker is on for the OS volume. Turn BitLocker off to run Sysprep. (0x80310039)
[gle=0x00000001]
2017-07-25 10:59:42, Error [0x0f0082] SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'ValidateBitLockerState' from C:\Windows\System32\BdeSysprep.dll; dwRet = 0x80310039[gle=0x00000001]
2017-07-25 10:59:42, Error SYSPRP SysprepSession::Validate: Error in validating actions from C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml; dwRet = 0x80310039
2017-07-25 10:59:42, Error SYSPRP RunPlatformActions:Failed while validating SysprepSession actions; dwRet = 0x80310039
2017-07-25 10:59:42, Error [0x0f0070] SYSPRP RunExternalDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = 0x80310039
2017-07-25 10:59:42, Error [0x0f00d8] SYSPRP WinMain:Hit failure while pre-validate sysprep generalize internal providers; hr = 0x80310039
2017-07-25 10:59:55, Info [0x0f0052] SYSPRP Shutting down SysPrep log

In realtà, incuriosito da quel lucchetto aperto e il segnale di Warning sul disco del sistema operativo, ho scoperto che la protezione dei dati c’è, anche se non si vede. In pratica, quello che Windows 10 Creators Update fa, è una pre-attivazione di Bitlocker, il sistema che permette di criptare i dati ospitati su disco e che consiglio caldamente di utilizzare nel caso in il tuo PC portatile ti segua in tutti i tuoi spostamenti. Aprendo il Pannello di Controllo e portandoti sulla voce relativa alla sicurezza dei dati, noterai una schermata simile (io l’ho recuperata in inglese, ho dimenticato di fare uno screenshot al SO che stavo preparando!):

Sysprep was not able to validate your Windows Installation (Bitlocker) 1

A questo punto hai una sola possibilità: dato che non puoi lanciare un Sysprep di una macchina con Bitlocker attivo, dovrai prima disattivarlo e quindi -una volta terminata la decrittografia- rilanciare il processo di chiusura (Sysprep, appunto). Per farlo ti consiglio di utilizzare la Powershell, nettamente più rapida di una criptazione completa dei dati e successiva decrittografia.

Apri una finestra di PowerShell e lancia il comando Disable-BitLocker -MountPoint "C:", dove C: è la lettera corrispondente al disco che ospita il sistema e che ti sta dando questo problema. A questo punto dovrai semplicemente attendere che la decrittografia venga completata, a quel punto non dovresti più avere errori a video:

 esc.


fonti utilizzate:
Condividi l'articolo con i tuoi contatti:

Lo scorso 30 giugno Authy (fai clic qui se non sai di cosa sto parlando) ha annunciato la disponibilità di una prima versione beta del suo client per PC Windows e macOS:

View story at Medium.com

Dopo anni passati tra smartphone (o tablet) e la sola estensione per Google Chrome, sembra che finalmente si sia arrivati a un’intenzione concreta, per portare l’autenticazione a due fattori più vicino a ciò che spesso la richiede, un PC. Ci si autentica al servizio desiderato e si ottiene il codice direttamente con un ALT + TAB (Windows, ovviamente, su macOS ⌘⇥), il tutto risparmiando preziosi secondi ed escludendo l’ingaggio di uno smartphone che spesso si vorrebbe lasciare in tasca, o nel cassetto della scrivania.

Il pacchetto di installazione si scarica dal sito web ufficiale e Authy invita gli utilizzatori a inviare ogni feedback all’indirizzo di posta elettronica beta@authy.com, per permettere agli sviluppatori di correggere rapidamente errori e sviste, ma anche di introdurre quanto prima tutte le funzioni già disponibili sul ben più stabile e ricco client per Android e iOS.

La funzione di OneTouch Authentication, che è una tra le cose più interessanti e comode dell’applicazione Mobile, arriverà anche su questa beta PC / macOS di Authy, insieme alla versione del programma per i sistemi Linux. Ciò che nel frattempo puoi già fare e che consiglio caldamente, è proteggere (ulteriormente) i tuoi accessi 2-Step tramite codice di sblocco del nuovo software beta (la Master Password, stesso concetto messo in atto sul software mobile).

In attesa che vengano rilasciate nuove versioni di Authy PC (da capire se riuscirà questa ad aggiornarsi in autonomia o se sarà necessario scaricare e installare manualmente un nuovo pacchetto prendendolo dal sito web dell’azienda), a te non resta che tenerti una copia installata sul tuo smartphone e mettere in funzione anche la versione PC, così da avere sempre a portata di mano i tuoi codici di autenticazione randomici.

Authy
Authy
Developer: Authy Inc.
Price: Free
Authy 2-Factor Authentication
Authy 2-Factor Authentication
Developer: Authy
Price: Free

esc.

Condividi l'articolo con i tuoi contatti:

Articolo “appunti“, come sporadicamente capita qui sopra. Ho avuto la necessità di rimuovere delle mappature verso stampanti di rete non più raggiungibili (cambio server remoto di stampa, nda), tutte queste non controllate da GPO (erano state aggiunte manualmente dagli utenti). Ho aggirato l’ostacolo con alcune righe di VBScript. Le ritrovi qui di seguito nel caso in cui dovessero servirti.

VBScript: rimuovere mappature stampanti (Coding)

Pulizia completa (da server)

Ti ricordo che il VBScript può essere eseguito manualmente, o inserito in un più complesso (e completo) script di Logon, o magari puoi pensare di lanciarlo su altre macchine passando per PSExec o qualsiasi altro strumento di gestione postazioni come Kace (o equivalenti).

Dim objWMIService, objNetwork, colInstalledPrinters, objPrinter
strComputer = "."
i = 0
PrintServer = "NOME-VECCHIO-SERVER"
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
 ("Select * from Win32_Printer")
 For Each objPrinter in colInstalledPrinters
 ReDim Preserve arrPrinterName(i)
 arrPrinterName(i) = objPrinter.Name
 If InStr(arrPrinterName(i), PrintServer) Then
 Set objNetwork = WScript.CreateObject("WScript.Network")
 objNetwork.RemovePrinterConnection arrPrinterName(i)
 i=i+1 
 Else
 End If
Next

Il nome del server viene dichiarato come variabile PrintServer (facile intuirlo, eh?), devi praticamente sostituire quell’unica cosa lasciando invariato il resto.

e qualcosina da locale

Sì, perché potrebbe anche capitare che –contestualmente– ci sia qualcosa installato in locale sulla macchina (e non solo figlio del tasto destro → connetti), anch’esso non più utile alla quotidianità dell’utente. A questo punto però, contrariamente alla porzione di script di prima, ricorda che per quella di seguito servirà essere amministratori del PC (quindi bisognerà lanciare lo script come tali, o trovare un’alternativa):

arrDeletePrinters = Array("STAMPANTE1","STAMPANTE2","STAMPANTE3")
For Each objPrinter in colInstalledPrinters
 For Each strPrinter in arrDeletePrinters
 If Not InStr(1, objPrinter.DeviceID, strPrinter, 1) = 0 Then
 objPrinter.Delete_ 
 End If
 Next
Next

dove al posto di STAMPANTE1, STAMPANTE2, STAMPANTE3(volendo puoi dichiararne ancora, o toglierne, se necessario), dovrai inserire quelle che realmente vuoi eliminare, basta il nome con il quale è stata dichiarata (ogni singola stampante) sul sistema, ammesso che qualcuno non abbia avuto la malsana idea di nominarle in maniera differente ogni volta.

Ovviamente non è detto che tu abbia necessità di entrambe le soluzioni, puoi quindi limitarti a riportare la prima parte dello script in un tuo file (.vbs) da salvare dove più ritieni opportuno (in modo tale che sia raggiungibile dalle tue postazioni, chiaramente), o magari solo la seconda, stando però attento a includergli in testa il blocco relativo alla preparazione variabili e funzioni da richiamare (Dim objWMIService, objNetwork, colInstalledPrinters, objPrinter, la parte relativa a strComputer e il Set objWMIService = GetObject(“winmgmts:” _& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)).

Un grande grazie alle fonti che hanno permesso di “pacchettizzare” una soluzione rapida per aggirare un banale ostacolo:

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Ti è mai capitato di preparare una macchina “template” da catturare e clonare su diverse altre macchine dello stesso modello? Qui continuamente, ed è tutto ciò su cui si cerca di basare il rilascio di nuove postazioni. Avere un solo modello Desktop e uno laptop (o comunque un numero quanto più limitato) aiuta a gestire meglio il parco macchine aziendale, è risaputo ed è una pratica di quelle buone, da cercare di mantenere il più possibile nel tempo.

Tralasciando però quella che è la pippa mentale relativa alla teoria delle buone pratiche, passiamo al succo dell’articolo e al problema specifico da risolvere: un SysPrep fallito, con tanto di messaggio di accompagnamento simile (in realtà potrebbe essere identico) a quello riportato nel titolo dell’articolo.

Microsoft Windows

Di motivi per far fallire un SysPrep ne esistono diversi, ma un paio sono quelli più comuni e sono quelli a cui possiamo fare riferimento insieme (con relativa soluzione), e onestamente non ho idea del perché io abbia lasciato nel dimenticatoio questo articolo (la bozza era del 2014, fa un po’ te). Provo a dargli una svecchiata, magari è la volta buona che va in pubblicazione :-)

Hai finito le cartucce

Con Windows 7, contrariamente a Windows 10, avevi a disposizione un massimo di 3 Rearm di sistema (il Rearm serviva a terminare un intervallo di utilizzo di sistema privo di attivazione, cominciandone uno nuovo e permettendoti di estendere il tuo periodo “di prova” di Windows, ciò è alla base dei periodi trial di Microsoft tutt’oggi, sia per Windows che per Office). Questo era ciò che nel libro di teoria potevi trovare pressoché ovunque, ma che come ogni medaglia, dava il meglio di sé voltando la prima faccia. Un SysPrep comprendente un parametro di Rearm, andava a dare un’occhiata a quello che era il contatore di sistema, che puoi facilmente richiamare ancora oggi eseguendo il comando slmgr.vbs -dlv (come suggerito anche nel forum di Microsoft):

A fatal error occurred while trying to sysprep the machine

Lo screenshot qui sopra fa riferimento a quel vecchio sistema 7 che dovevo mandare in SysPrep nel 2014, e che riportava uno zero in corrispondenza della voce “Numero di ripristini di Windows rimanenti“, era proprio lui a impedirmi di portare a termine il mio compito. Come si aggirava e si aggira tutt’oggi (se hai ancora a che fare con Windows 7, nda) l’ostacolo? Semplice. Si va a modificare la chiave di registro che ne controlla il contatore.

Per farlo però, ti occorre mandare in recovery il sistema, premendo F8 durante l’avvio dell’OS e selezionando la voce relativa alla partenza avanzata di Windows (Advanced Boot Options), quella che ti permette di avere un prompt dei comandi. Dal prompt dovrai semplicemente fare tre operazioni relative al registro di Windows:

reg load HKLM\MY_SYSTEM "%~dp0Windows\System32\config\system"
reg delete HKLM\MY_SYSTEM\WPA /f
reg unload HKLM\MY_SYSTEM

Se la modifica va a buon fine, potrai riavviare la macchina e rilanciare il comando slmgr.vbs -dlv per verificare che il contatore sia tornato a mostrare un numero di possibili Rearm positivo. Se Windows dovesse richiederti il Product Key, ignora il passaggio e recuperalo in seguito, anche via prompt dei comandi, sempre passando per il slmgr.vbs. Il comando completo per passare un Product Key al sistema è slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX dove, chiaramente, dovrai andare a sostituire la serie di “X” con il codice in tuo possesso. Se non lo hai, utilizzane uno a tempo (scadono entro un mese):

  • Windows 7 Ultimate: D4F6K-QK3RD-TMVMJ-BBMRX-3MBMV
  • Windows 7 Professional: HYF8J-CVRMY-CM74G-RPHKF-PW487
  • Windows 7 Home Premium: RHPQ2-RMFJH-74XYM-BH4JX-XM76F
  • Windows 7 Home Basic: YGFVB-QTFXQ-3H233-PTWTJ-YRYRV
  • Windows 7 Starter: 7Q28W-FT9PC-CMMYT-WHMY2-89M6G

A tutto questo c’è un’alternativa che ti permette di bypassare il contatore dei Rearm e fare SysPrep perdendo un po’ meno tempo. È riportata in un articolo che mi è tornato molto utile in passato (questo: mickitblog.blogspot.it/2011/08/fatal-error-occurred-while-trying-to.html), questo il riassunto:

  • Nel file Unattend.xml cerca e cancella il parametro skiprearm=1
  • Nel regedit, naviga in HKLM\SYSTEM\Setup\Status\SysprepStatus, quindi cerca e imposta GeneralizationState a 7
  • Da un prompt dei comandi, lancia prima un msdtc -uninstall, fai seguire poi un msdtc -install
  • Torna nel regedit, naviga in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform, quindi cerca e imposta il valore SkipRearm a 1
  • Togli il cavo di rete dalla macchina (e disconnettila dal WiFi, se connessa)
  • Rilancia il SysPrep.

E se invece è un problema di profilo?

Può capitare anche questo, ed è il secondo caso più comune. Hai preparato il sistema, sei partito da un’immagine già esistente, da fondamenta già gettate e apparentemente ben solide ma, all’ultimo minuto, il SysPrep va in errore per cause apparentemente sconosciute, strane da interpretare. Potresti scoprire che in realtà si tratta di un vecchio profilo locale rimosso, ma rimasto “appeso” nel registro di sistema. Se ne parlava in un vecchio thread nel forum, tra le possibili soluzioni: social.technet.microsoft.com/Forums/windows/en-US/2aa9466d-a203-4f3e-80d9-f1ae6d11f6c5/sysprep-failed-at-microsoftwindowsshellsetup?forum=w7itproinstall

È ancora una delle vie d’uscita poco considerate, ma che possono toglierti le castagne dal fuoco. Avvia il regedit, naviga in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList. Noti nulla di strano? Se qui compare un profilo non più presente sulla macchina, la CopyProfile prevista dal tuo file XML unattend non potrà mai andare a buon fine, generandoti l’errore a video.

Cancella la chiave di registro (intera) relativa al profilo non più esistente. Riprova ora il SysPrep, molto probabilmente andrà a buon fine e tu potrai concludere il lavoro.

Cosa dice Microsoft

Raccoglie qualche riferimento all’interno di un documento ufficiale di Support, che tu stesso puoi leggere puntando il browser a support.microsoft.com/en-us/help/929828/an-error-message-occurs-when-you-run-sysprep-generalize-in-windows-vis, probabilmente però questo non riuscirà a dare risposta alla tua domanda e difficoltà, ma questa è un’altra storia.

Ciò che mi auguro è che l’articolo, rispolverato e rimesso più o meno in ordine, possa darti realmente una mano in caso di difficoltà con questo ottimo strumento che è SysPrep.

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Di strada da quell’articolo del 2011 se n’è fatta tanta, e anche Mozilla ha modificato il comportamento del suo Session Restore integrato nel browser. In realtà le cose sono state modificate nel 2014, ma non ho mai avuto la reale necessità di cambiare il comportamento di SessionStoreBackup, almeno fino a oggi.

Firefox: disabilitare scansione antivirus nel download manager integrato

Perché proprio oggi?

Perché se anche tu utilizzi le versioni non stabili del browser Mozilla (le Nightly), ti sarai già accorto che di tanto in tanto qualcosa di spiacevole può accadere. Tutto risolvibile, sia chiaro, ma bisogna stare accorti, sempre pronti sul pezzo e con le dovute armi a propria disposizione per evitare di perdere dati che ci servono, ai quali teniamo particolarmente, come (nel mio caso) le tab aperte di sessione in sessione. Io utilizzo –da sempre– l’opzione che riapre ciò che ho lasciato aperto l’ultima volta che ho utilizzato il browser, delegando così un compito importante al file sessionstore.js, solitamente presente nella cartella del profilo (ormai dovresti saperlo), ma che può corrompersi ed essere sovrascritto, facendoti perdere così la tua sessione di navigazione salvata.

Per ovviare al problema, il mio SessionStoreBackup ha sempre lavorato portando a casa il risultato, ma l’ho modificato per tenere al sicuro il file di recovery previsto da Mozilla (recovery.js), così da evitare di incorrere in possibili rogne. Dato che l’ho riaperto, ho guardato sotto al cofano e deciso di cambiare metodo, di non salvarne più copie, ma di tenerne sempre una, quella più aggiornata, confrontandola di volta in volta con quella che vive nella cartella del profilo di Firefox, quella vera, quella creata dal browser (e non clonata da me).

Questo è il “nuovo” script (il solito in realtà, ma un po’ rivisto):

Rimane invariato il modo di dichiarare il nome della cartella del tuo profilo (devi sostituire TUOPROFILO.default in riga 5 con ciò che trovi accedendo a about:support, quindi facendo clic sul pulsante Apri cartella vicino la voce Cartella del profilo). Da quella riga in poi, non c’è più bisogno di toccare alcunché, il piccolo batch farà tutto il resto. Ricorda poi che il software può essere lanciato manualmente con il classico doppio clic o (decisamente consigliato) programmato tramite le operazioni pianificate di Windows, così da “potertene dimenticare“.

Fallo girare ogni ora circa, così da tenere sempre aggiornato il tuo recovery.js, tornerà parecchio utile quando le tue sessioni risulteranno essere perse a causa di un crash di Firefox (non solo di Nightly eh).

Recupero manuale della sessione

Manuale ma semplice, te lo assicuro. Il batch si occupa della prima parte del lavoro, quella del backup, quella che generalmente ci si dimentica di fare e che è quindi importante programmare e lasciare fare a lui per evitare possibili errori. A te tocca, solo in caso di necessità, prendere il file di backup e andare a fare un rapido lavoro di taglio e cucito con Firefox chiuso, così da permettergli di riprendere la giusta sessione di lavoro alla sua riapertura.

Nella cartella del tuo profilo dovranno esistere due cartelle. La prima è quella del mio batch, si chiama SessionStoreBackup (che fantasia eh?) e dovrebbe contenere esclusivamente un file, il recovery.js. La seconda cartella è invece quella ufficiale di Mozilla, la sessionstore-backups, dovrebbe contenere questi file:

  • recovery.js – Contiene lo stato di Firefox aggiornato a 15 secondi prima di una chiusura o di un crash.
  • recovery.bak – Come sopra, ma lo stato è quello aggiornato a 30 secondi prima dell’accaduto.
  • previous.js – Contiene lo stato di Firefox relativo a due chiusure di programma fa (volute o per crash improvviso).
  • upgrade.js-[build id] – Contiene lo stato di Firefox a prima di un aggiornamento a nuova versione, il “build-id” ovviamente corrisponderà alla data di upgrade (per esempio: 20170619030208).

Saltando a piè pari questa cartella, puoi utilizzare il recovery.js generato dal batch:

  • taglialo e incollalo nella cartella del tuo profilo.
  • Cerca (ammesso che esista) il file sessionstore.js. Se esiste, cancellalo.
  • Ora rinomina il file recovery.js in sessionstore.js
  • Avvia Firefox, dovresti poter rivedere ogni tab lasciata precedentemente aperta :-)

Puoi fare la stessa identica cosa con i file generati da Mozilla, ma capita talvolta che più crash (dovuti magari a qualche instabilità o incompatibilità con un componente aggiuntivo, per esempio) vadano a rendere inutilizzabili i vari js. SessionStoreBackup cerca di evitare tutto questo mettendoti a disposizione un file teoricamente sempre valido (il “teoricamente” è inevitabile, perché se nel frattempo parte il batch e scopre che il file è cambiato, andrà a sovrascrivere la tua copia, invalidandola), il tutto a meno di modificare ulteriormente il software e fargli creare più versioni del recovery.js.

Cosa ne pensi?

Condividi l'articolo con i tuoi contatti: