2009-07-21 11 views
8

Ho avuto difficoltà a convincere i miei utenti a impostare manualmente la variabile d'ambiente PATH, sto cercando un modo per farlo automaticamente. Un file batch sarebbe preferibile, dal momento che ciò richiederebbe loro di eseguirlo da soli (con un avvertimento su ciò che stanno facendo), ma anche un'aggiunta allo setup.py è accettabile.Modifica permanente della variabile d'ambiente% PATH% di un utente tramite batch o Python

Altre informazioni: SET riguarda solo gli shell attuali e derivati; i valori permanenti sembrano essere memorizzati nel Registro da qualche parte (un luogo in cui non oso calpestare).

risposta

5

Come ha detto David, c'è lo strumento SETX che è possibile ottenere dal Resource Kit di Windows.

Tuttavia, ho trovato che SETX ha problemi (come arresto anomalo) a volte. Non ho capito esattamente quale sia il problema, ma sospetto che sia un problema di dimensioni (ad esempio se si tenta di impostare una variabile - nel mio caso si trattava di PATH - a un valore troppo grande, per esempio> 1024 un po 'strano personaggi).

Ho trovato altri due eseguibili che possono fare la stessa cosa. Il mio preferito in particolare è SetEnv di Jonathan "Darka" Wilkes over a CodeProject. L'ha reso abbastanza utile, con buone funzionalità, ed è compatibile con tutti i sistemi Windows-ho suggerito anche alcune funzionalità. :)

Un'altra opzione, se siete fino ad esso, è quello di farlo manualmente (in realtà di aggiungere l'articolo al Registro di sistema e poi o trasmettendo un WM_SETTINGCHANGE a finestre di primo livello, o riavviare la shell/riavvio) . Comunque penso che SetEnv in un file BATCH sia la soluzione migliore. ;)

+0

Devi ancora installarli SetEnv, ma questa è una procedura relativamente indolore. Questo sta cercando di essere il modo in cui lo faccio. –

+0

Bene, non è necessario * installare * SetEnv, è sufficiente avere l'eseguibile nella stessa directory del file BATCH che esegue l'impostazione. – Synetech

+0

Alla fine sono riuscito a lavorare su questo. Installato SetEnv in wine, estrasse il file eseguibile e lo gettò nella directory del mio programma, scrisse un file batch per usarlo e tutto il resto. –

2

Da questo website:

Utilizzando lo strumento aggiuntivo Setx.exe

Non fa parte della configurazione standard di Windows XP ma uno strumento da riga di comando chiamato Setx.exe è incluso nel supporto per Windows XP Service Pack 2 Strumenti . Questo strumento estende il comando in modo che sia possibile apportare modifiche permanenti a le variabili di ambiente. Ad esempio, per aggiungere una cartella C: \ Nuova cartella per il percorso, il comando sarebbe essere

setx path "%PATH%;C:\New Folder" 

Questo suona come funzionerà per quello che hai intenzione di fare.

5

Quindi, poiché ho avuto difficoltà a convincere i miei utenti a impostare manualmente il PERCORSO, sto cercando un modo per farlo automaticamente.

La chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths (così come HKEY_CURRENT_USER\...) consente di collegare un percorso specifico applicazione al nome del file eseguibile.

Ogni volta che viene avviato un file eseguibile del nome dato, il percorso specifico applicazione si aggiunge alla variabile d'ambiente PATH quella eseguibile.

2

Mi sono imbattuto in questa domanda e non mi è piaciuta nessuna delle opzioni disponibili, quindi ho deciso di scrivere la mia soluzione.

(SetEnv sarebbe stato buono, ma non mi piaceva la licenza non-libre e preferisco sempre non dover chiamare un sottoprocesso ... Non mi dispiacerebbe chiamare SetEnv come sottoprocesso ma, secondo Wikipedia, la licenza che usa è non-libre perché ha una sorta di clausola "non fare il male" e secondo me la restrizione legalmente ambigua è sempre una bomba a orologeria.)

Ecco un po 'di MIT-licensed Python class per nascondere il lavoro di modifica del registro direttamente e inviando il WM_SETTINGCHANGE. (Buono per l'uso in setup.py)

Problemi correlati