Modification permanente de la variable d’environnement% PATH% d’un utilisateur via batch ou Python

J’ai eu du mal à faire en sorte que mes utilisateurs définissent manuellement la variable d’environnement PATH, je cherche un moyen de le faire automatiquement. Un fichier de commandes serait préférable, car cela les obligerait à les exécuter eux-mêmes (avec un avertissement sur ce qu’ils font), mais un ajout à setup.py est également acceptable.

Autres informations: SET affecte uniquement les shells actuels et dérivés; les valeurs permanentes semblent être stockées dans le Registre quelque part (un endroit où je n’ose pas marcher).

Comme David l’a dit, il existe un outil SETX que vous pouvez obtenir à partir du Kit de ressources Windows.

Cependant, j’ai constaté que SETX a parfois des problèmes (comme un crash). Je n’ai pas compris exactement quel est le problème, mais je soupçonne que c’est un problème de taille (par exemple si vous essayez de définir une variable dans mon cas, c’était PATH à une valeur trop grande, par exemple> 1024 un peu bizarre). personnages).

J’ai trouvé deux autres exécutables qui peuvent faire la même chose. Mon préféré en particulier est SetEnv de Jonathan “Darka” Wilkes sur CodeProject. Il l’a rendu très utile, avec de bonnes fonctionnalités, et il est compatible avec tous les systèmes Windows. J’ai également suggéré certaines fonctionnalités. 🙂

Une autre option, si vous le voulez bien, est de le faire manuellement (en ajoutant l’élément à la base de registre, puis en diffusant un fichier WM_SETTINGCHANGE dans les fenêtres de niveau supérieur ou en redémarrant le shell / le redémarrage). Cependant, je pense que SetEnv dans un fichier BATCH est votre meilleur pari. 😉

Donc, comme j’ai du mal à faire en sorte que mes utilisateurs définissent manuellement le PATH, je cherche un moyen de le faire automatiquement.

La HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths (ainsi que HKEY_CURRENT_USER\... ) vous permet de joindre un chemin d’ access spécifique à votre application .

Chaque fois qu’un exécutable du nom donné est démarré, le chemin spécifique à l’ application est ajouté à la variable d’environnement PATH de cet exécutable.

De ce site :

Utilisation de l’outil complémentaire Setx.exe

Il ne fait pas partie de l’installation standard de Windows XP, mais un outil de ligne de commande appelé setx.exe est inclus dans les outils de support de Windows XP Service Pack 2. Cet outil étend la commande set afin de pouvoir apporter des modifications permanentes aux variables d’environnement. Par exemple, pour append un dossier C: \ New Folder au chemin, la commande serait

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

Cela semble fonctionner pour ce que vous voulez faire.

Je viens juste de rencontrer cette question et je n’aimais aucune des options disponibles, alors j’ai décidé d’écrire ma propre solution.

(SetEnv aurait été bon, mais je n’aimais pas la licence non-libre et je préfère toujours ne pas avoir à appeler un sous-processus … Je n’aimerais pas appeler SetEnv comme un sous-processus mais, selon Wikipedia, la licence il utilise est la non-liberté parce qu’il a une sorte de clause “ne pas faire de mal” et ce genre de ressortingction juridiquement ambiguë est toujours une bombe à retardement à mon avis.)

Voici une petite classe Python sous licence MIT pour cacher le travail de modification directe du registre et envoi du fichier WM_SETTINGCHANGE. (Bon à utiliser dans setup.py )