12615 Letture

Come spostare i programmi da C: a D: o ad altre unità

Un programma si dice portabile quando può essere utilizzato senza installazione: l'eseguibile di un'applicazione portabile non modifica la configurazione del sistema, non inserisce chiavi e valori nel registro di sistema di Windows e non salva o richiede file all'infuori della cartella in cui è posizionato.
La maggior parte dei programmi che si installano in Windows, invece, scrive informazioni non solo nella propria cartella (la directory nella quale vengono installati) ma anche in altre locazioni di memoria oltre che in varie posizioni del registro (nell'articolo Trasferire programmi da un PC a un altro abbiamo fornito alcune informazioni in merito).

Come fare, quindi, per spostare i programmi da C: a D: oppure ad altre unità?

Questa necessità è infatti piuttosto frequente allorquando non si avesse più spazio disponibile sull'unità principale e si volesse spostare un'applicazione su un altro disco senza reinstallarla.


È il caso della migrazione da un hard disk tradizionale a un SSD (vedere ): generalmente la nuova unità SSD ha una capienza inferiore alle dimensioni complessive dell'hard disk.

In ottica spostamento del sistema operativo, quindi, è assai probabile che non ci sia spazio per tutte le applicazioni installate nel vecchio hard disk. Certo, è possibile disinstallare quelle che non servono più e fare spazio, intanto, riposizionando altrove le cartelle Documenti, Download, Immagini, Video, Musica insieme con i loro contenuti: Spostare cartella documenti e download in un altro disco.

Come fare, però, per spostare i programmi da C: a D: supponendo per ipotesi che D: sia il disco più capiente e C: l'hard disk o l'unità SSD con un ridotto quantitativo di spazio disponibile?

Perché i link simbolici sono d'aiuto per spostare un programma da C: a D:

C'è una funzionalità di Windows (comune peraltro anche agli altri sistemi operativi…) che permette di spostare i programmi da C: a D: o su un altro disco con uno sforzo praticamente nullo.

I link simbolici possono essere considerati come "collegamenti avanzati".
Grazie a un link simbolico un programma può apparire (per il sistema operativo e per le altre applicazioni) sempre presente nella cartella originale quando in realtà è stato spostato altrove, addirittura su un'unità diversa.

Si supponga di aver installato un programma nella cartella C:\Program files o C:\Program files (x86).
Usando un link simbolico tutti i riferimenti alla cartella C:\Program files\nomeprogramma o C:\Program files (x86)\nomeprogramma conservati in varie aree di Windows continueranno ad essere corretti nonostante l'applicazione sia stata spostata, per esempio, nella directory D:\Programmi\nomeprogramma.

Si tratta di un espediente di importanza davvero cruciale: utilizzandolo si potrà spostare altrove la cartella di un programma e creare un link simbolico che faccia da ponte tra il vecchio percorso e quello nuovo (in questo modo tutti i riferimenti alla vecchia cartella rimarranno corretti).

Ne avevamo parlato anche nell'articolo Aumentare spazio su disco, come fare? al paragrafo Usare i link simbolici e le giunzioni tra cartelle.

I link simbolici possono essere di due tipologie: hard e soft. Il link soft "lavora" esattamente come un collegamento di tipo tradizionale: quando lo si utilizza si verrà diretti verso la cartella che realmente contiene i file.
Un hard link, invece, che è quello che utilizzeremo per spostare i programmi da C: a D:, "fa credere" al sistema operativo che i file siano memorizzati nella cartella specificata e non riposizionati altrove.

In Windows non vengono usati i termini soft link e hard link anche se il comando mklink supporta entrambe le modalità. Nel sistema operativo Microsoft si parla genericamente di link simbolici.

Per usare il comando mklink bisognerà necessariamente aprire il prompt dei comandi con i diritti di amministratore.

Spostare i programmi da un'unità all'altra: la procedura passo-passo

Per spostare programmi da C: a D:, ad esempio, è possibile seguire la procedura qui illustrata:

1) Assicurarsi, facendo eventualmente riferimento al Task Manager (CTRL+MAIUSC+ESC) di Windows, che nessun componente del programma che si desidera spostare sia in esecuzione.

2) Spostare la sottocartella C:\Program files o C:\Program files (x86) sull'altro disco (ad esempio nella cartella D:\Programmi.

Come spostare i programmi da C: a D: o ad altre unità

3) Alla comparsa del seguente messaggio (appare nel caso delle cartelle Program files ma non per altre directory fuori da quelle di sistema), bisognerà concedere i diritti di amministratore cliccando su Continua.

Come spostare i programmi da C: a D: o ad altre unità

4) Aprire il prompt dei comandi di Windows con i diritti di amministratore.

5) Utilizzare il comando seguente:
mklink /J "C:\Program files\ORIGINE" "D:\Programmi\DESTINAZIONE"

Come spostare i programmi da C: a D: o ad altre unità

La cartella ORIGINE contenuta, in questo caso, in C:\Program files dovrà essere già stata interamente spostata altrimenti verrà visualizzato il messaggio Impossibile creare un file, se il file esiste già.


A questo punto, cliccando due volte sulla cartella originale, dovrebbero apparire i contenuti spostati nell'altra unità.
Inoltre, avviando l'applicazione questa dovrebbe eseguirsi senza alcun problema.
Il comando mklink /J crea di fatto una giunzione di directory ma di fatto sempre si tratta di un link simbolico.

Il link simbolico impostato (giunzione di directory) "resisterà" anche al riavvio del sistema: non si dovrà quindi creare un file batch da eseguire ogni volta al boot di Windows.

Per verificare, in qualunque momento, le giunzioni di directory eventualmente presenti in una cartella, basterà - da prompt dei comandi - digitare dir /al.


  1. Avatar
    Michele Nasi
    19/01/2017 18:09:04
    L'articolo spiega come spostare applicazioni già installate senza disinstallarle. È ovvio che se usi software portable o li installi subito sul secondo disco il problema non si pone.
  2. Avatar
    grillo1939
    19/01/2017 16:51:59
    Ciao Michele, io metto tutti i programmi portable nel 2° HD e anche altri programmi che uso poco, al momento dell'installazione. Una volta fatto questa operazione utilizzo i programmi in entrambi i SO installati senza nessun problema
  3. Avatar
    Michele Nasi
    18/01/2017 15:14:12
    Come indicato nell'articolo, mklink /d consente di creare un soft link mentre mklink /j un hard link per le cartelle. Con la seconda versione OS e applicazioni non si accorgeranno dello "spostamento" dei file e li tratteranno come se fossero nella cartella originaria.
  4. Avatar
    Leg@l4s
    18/01/2017 11:52:33
    argomento sempre interessante. mklink /j rispetto mklink /D differenzia solo per il fatto che con "/D" si possono puntare cartelle remote?
  5. Avatar
    Michele Nasi
    16/01/2017 11:48:42
    La disinstallazione funzionerebbe correttamente perché essa avrà visibilità sulla cartella C:\Program files. I file del programma, però, saranno eliminati anche dalla directory spostata, ad esempio, nell'unità D:. L'unica cosa è che dovrai cancellare manualmente la cartella creata, ad esempio, in D:\Programmi perché quella non sarà rimossa (tutto il suo contenuto verrà però correttamente eliminato dalla routine di disinstallazione).
  6. Avatar
    scaronic
    16/01/2017 11:44:06
    Ottimo articolo , mi viene un dubbio da profano e mi spiego meglio. Poniamo che provveda all'installazione di un programma ( tramite il consueto installatore fornito dal programma) , questo verrà installato in C:\ una delle cartelle Program Files Poi tramite una delle procedure descritte nell'articolo lo trasferisca in D:\Programmi e crei il Link Simbolico. Quando volessi disinstallare il programma , utilizzando la normale procedura di Windows . La disinstallazione funzionerebbe correttamente (penso di Sì) , le chiavi nel registro REGEDIT verrebbero eliminate , o dovrei fare qualche aggiustamento manuale ? in caso quale ?
Come spostare i programmi da C: a D: o ad altre unità - IlSoftware.it