47487 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, però, scrive informazioni non solo nella propria cartella (la directory ogni programma viene installato) 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 indicazioni in merito).

Come fare, quindi, per spostare i programmi da C: a D: oppure verso 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 Spostare sistema operativo su SSD): generalmente la nuova unità SSD ha una capienza decisamente inferiore rispetto alle dimensioni complessive dell'hard disk.

Nel caso in cui ci si preparasse allo spostamento del sistema operativo da hard disk a SSD, 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 davvero utilissimo: facendone uso 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 e né il sistema operativo né le applicazioni installate mostreranno alcun messaggio d'errore.
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 viene 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:, esso "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: è possibile applicare la procedura di seguito 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. In caso contrario bisognerà provvedere a chiuderlo. In alcune circostanze il semplice riavvio del sistema potrebbe non aiutare se il programma avviasse componenti e servizi, in automatico, ad ogni ingresso in Windows. Bisognerà quindi usare il pulsante Termina attività del Task Manager per arrestare tutti i componenti in esecuzione legati al programma che si vuole spostare.

2) Creare la cartella D:\Programmi.

3) Spostare la sottocartella ospitata all'interno di C:\Program files o C:\Program files (x86) contenente il programma che si intende ricollocare da C: a D: nella cartella D:\Programmi.

Per procedere basta tenere premuto con il tasto destro del mouse sulla sottocartella da spostare quindi trascinare da C:\Program files o C:\Program files (x86) in D:\Programmi. Cliccare infine su Sposta qui.


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

4) Alla comparsa del seguente messaggio (appare nel caso delle cartelle Program files - che sono cartelle di sistema - ma non per altre directory conservate a livello di filesystem 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à

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

6) 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à.

7) 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 trattasi sempre 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.

Un software alternativo per spostare i programmi da C: a D: è Folder Move

Per semplificare le cose a coloro che non sono così abituati a usare la finestra del prompt dei comandi di Windows, presentiamo anche il software Folder Move.

Scaricabile gratuitamente cliccando qui, Folder Move altro non è che un'interfaccia grafica per il comando mklink di Windows.

Folder Move è un programma portabile che si avvia semplicemente facendo doppio clic sul suo eseguibile.
Dalla schermata principale del software, basterà quindi specificare la cartella contenente il programma da spostare (Move from) e appena più in basso la directory di destinazione (Move to).


Se, all'avvio del programma, dovesse comparire l'avviso di Microsoft SmartScreen "PC protetto da Windows", si dovrà fare clic su Ulteriori informazioni quindi sul pulsante Esegui comunque.

Con un clic sul pulsante Move and Set symbolic link, il programma si farà carico - dapprima - di spostare la cartella indicata quindi di creare il link simbolico a livello di filesystem.

Per verificare l'effettiva creazione dei link simbolici, oltre al comando dir /al citato in precedenza si può eventualmente ricorrere al software gratuito NTFSLinksView che ha il vantaggio di permettere la scansione dell'intera unità di memorizzazione alla ricerca di tutti i link simbolici impostati.


Per procedere in tal senso, basta digitare ad esempio C:\ nell'apposito campo, scegliere Infinite dal menu Subfolders depth quindi cliccare il pulsante Go.


Questa pratica utilità può essere scaricata gratuitamente digitando NTFSLinksView nirsoft nella casella di ricerca di Google (cliccare quindi sul primo link restituito).


  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