4925 Letture
Programmi che si rifiutano di avviarsi all'interno di una macchina virtuale: come risolvere

Programmi che si rifiutano di avviarsi all'interno di una macchina virtuale: come risolvere

Qualche suggerimento per provare a eseguire entro i confini di una macchina virtuale un programma che è stato progettato per funzionare solo sui sistemi non virtualizzati.

Le macchine virtuali sono utili non soltanto nelle grandi aziende o a livello di data center: esse rappresentano un'ottima soluzione per effettuare test da parte di singoli utenti e professionisti verificando la bontà di una configurazione software prima di distribuirla sui vari sistemi collegati alla rete locale.
Con una macchina virtuale, come abbiamo visto nell'articolo Virtualbox: come utilizzare le istantanee per creare un ambiente di test, è possibile realizzare anche le cosiddette istantanee: è cioè possibile memorizzare la configurazione del sistema e ripristinarla al bisogno, velocemente, annullando tutte le modifiche applicate.

Il fatto è che alcuni software, soprattutto quelli offerti in versione di prova per un certo numero di giorni, generalmente rilevano l'esecuzione all'interno di una macchina virtuale.
Riuscire ad eseguirli comunque è spesso molto utile perché si ha la possibilità di svolgere test all'interno della macchina virtuale senza intaccare il funzionamento del sistema ospitante.


Come fare per installare ed eseguire un software che rifiuta di avviarsi all'interno di una macchina virtuale?

Il programma, di solito, controlla la configurazione di alcune chiavi del registro di sistema di Windows. Suggeriamo ad esempio di premere la combinazione di tasti Windows+R, digitare regedit (maggiori informazioni nell'articolo Regedit e registro di sistema: guida agli aspetti più utili) quindi portarsi in corrispondenza delle seguenti chiavi:

HKLM\System\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000
HKLM\HARDWARE\DESCRIPTION\System

Si potrà verificare che all'interno di queste chiavi sono presenti tante "voci spia" facenti riferimento all'hypervisor ovvero il componente software principale delle macchine virtuali.
Verificando il contenuto delle due chiavi del registro, qualunque programma può facilmente stabilire se fosse in esecuzione all'interno di una macchina virtuale e, di conseguenza, rifiutare l'avvio.

Se si avesse la necessità di eseguire un programma che rifiuta di avviarsi all'interno di una macchina virtuale suggeriamo di:

1) Scaricare nella macchina virtuale il software gratuito Process Monitor

2) Creare un'istantanea della configurazione della macchina virtuale (senza avviare il software che si vuole eseguire). A tal proposito, vedere l'articolo Virtualbox: come utilizzare le istantanee per creare un ambiente di test.

3) Avviare Process Monitor e attendere qualche istante: il programma inizierà a registrare tutti gli accessi effettuati al contenuto del registro di sistema e al file system.

4) Eseguire il programma che si rifiuta di avviarsi all'interno della macchina virtuale.

5) Alla comparsa del messaggio che informa l'utente circa l'impossibilità di avviare il programma dalla macchina virtuale, premere la combinazione di tasti CTRL+MAIUSC+ESC e individuare (scheda Dettagli) il nome del processo corrispondente al programma che si vuole eseguire entro i confini della macchina virtuale.

6) In Process Monitor premere la combinazione di tasti CTRL+L oppure cliccare sul menu Filter, Filter.

7) Dal primo menu a tendina, scegliere Process name, dal secondo is e specificare nell'apposita casella il nome del file eseguibile rilevato in precedenza. Lasciare selezionato Include, più a destra, quindi cliccare sul pulsante Add.

Programmi che si rifiutano di avviarsi all'interno di una macchina virtuale: come risolvere

In questo modo Process Monitor visualizzerà soltanto le operazioni compiute dal programma d'interesse a livello di registro e di file system.

8) Esaminando il responso offerto da Process Monitor è possibile stabilire con precisione quali elementi del registro vengono consultati per accertare l'esecuzione entro l'ambiente virtualizzato.

9) A questo punto si dovranno annullare tutte le modifiche apportate dal programma alla configurazione di Windows all'interno della macchina virtuale. Per procedere, basterà recuperare e ripristinare una precedente istantanea.


Programmi che si rifiutano di avviarsi all'interno di una macchina virtuale: come risolvere

10) Prima di riavviare l'applicazione si può provare ad operare le opportune modifiche sui valori del registro di sistema.
Si possono ad esempio rimuovere, previo backup, le stringhe facenti riferimento all'hypervisor oppure copiarle da un sistema non virtualizzato.

Così facendo, il programma che prima si rifiutava di avviarsi dovrebbe andare in esecuzione non rilevando più i dati identificativi dell'hypervisor all'interno del registro di sistema.
Se non si dovesse invece ottenere il risultato sperato bisognerà ripetere la procedura vista in precedenza ed accertarsi con Process Monitor che non si fosse dimenticato l'intervento su qualche valore del registro di sistema.
Aiutandosi con il ripristino dell'istantanea iniziale, si possono svolgere tutti i test che si vogliono - con la certezza di poter annullare sempre tutte le modifiche - e studiare il funzionamento del programma di proprio interesse.

Programmi che si rifiutano di avviarsi all'interno di una macchina virtuale: come risolvere