9
votes

Modifier de manière permanente la variable% de l'environnement% du chemin de l'utilisateur via le lot ou le python

J'ai de la difficulté à faire de mes utilisateurs à définir manuellement la variable d'environnement de chemin d'accès, je cherche un moyen de le faire automatiquement. Un fichier de commandes serait préférable, car cela les obligerait à le gérer eux-mêmes (avec un avertissement sur ce qu'ils font), mais un ajout au setup.py est également acceptable. < / p>

Autres informations: SET n'affecte que les coques actuelles et dérivées; Les valeurs permanentes semblent être stockées dans le registre quelque part (un endroit où je n'ose pas marcher).


0 commentaires

4 Réponses :


2
votes

de cette Site Web :

Utilisation de l'outil Ajouter SETX.EXE P>

Ce n'est pas une partie des fenêtres standard Configuration XP mais un outil de ligne de commande appelé setx.exe est inclus dans le Support Windows XP Service Pack 2 Outils. Cet outil étend l'ensemble commander pour que les changements permanents dans Les variables d'environnement peuvent être faites. Par exemple, pour ajouter un dossier C: \ Nouveau Dossier sur le chemin, la commande serait être p>

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


0 commentaires

5
votes

Comme David l'a dit, il y a l'outil SETX que vous pouvez obtenir à partir du kit de ressources Windows.

Cependant, j'ai trouvé que Setx avait des problèmes (comme le crash) parfois. Je n'ai pas compris exactement quel est le problème, mais je soupçonne que c'est une question de taille (par exemple, si vous essayez de définir une variable dans mon cas, c'était un chemin d'accès à une valeur trop grosse, par exemple> 1024 caractères).

J'ai trouvé deux autres exécutables pouvant faire la même chose. Mon préféré en particulier est setenv < / Strong> par Jonathan "Darka" Wilkes sur CodeProject. Il l'a rendu assez utile, avec une bonne fonctionnalité, et il est compatible avec tous les systèmes Windows, j'ai également suggéré des fonctionnalités également. :)

Une autre option, si vous êtes à la hauteur, est de le faire manuellement (en ajoutant l'élément au registre, puis de diffuser un wm_settingChange vers des fenêtres de niveau supérieur ou de redémarrage de la coque / Redémarrer). Cependant, je pense que Setenv dans un fichier de commandes est votre meilleur choix. ;)


3 commentaires

Vous devez toujours les avoir installer Setenv, mais c'est une procédure relativement indolore. Cela cherche à être la façon dont je le fais.


Eh bien, vous n'avez pas vraiment à Installer Setenv, vous pouvez simplement avoir l'exécutable dans le même répertoire que le fichier de commandes qui effectue le réglage.


J'ai finalement eu le tour de travailler sur ceci. Installé Setenv dans le vin, tiré de l'exécutable et jeté dans mon programme Dir, a écrit un fichier de commandes pour l'utiliser, et tout est sauvant.



6
votes

Donc, puisque j'ai de la difficulté à faire de mes utilisateurs à régler le chemin manuellement, je cherche un moyen de le faire automatiquement.

Le HKEY_LOCAL_MACHINE \ logiciel \ Microsoft \ Windows \ Currenversion \ APPR PATHES (ainsi que HKEY_CURRENT_USER \ ... ) Touche de registre vous permet de joindre un Application Chemin spécifique à votre nom exécutable.

Chaque fois qu'un exécutable du nom donné est démarré, le chemin d'accès Application est ajouté à la variable d'environnement de l'exécutable .


0 commentaires

3
votes

Je viens de contourner cette question et n'aimais aucune des options disponibles, j'ai donc décidé d'écrire ma propre solution.

(Setenv aurait été bon, mais je n'ai pas aimé la licence non-Libre et je préfère toujours ne pas avoir à appeler une sous-processus ... Cela ne me dérangerait pas d'appeler Setenv en tant que sous-processus mais, selon Wikipedia , la licence qu'il utilise est non-Libre, car elle a une sorte de clause "sans méfilement" et que la limite de restriction ambiguë légalement est toujours une bombe à retardement à mon avis.)

Voici un petit Classe Python sous licence de MIT pour cacher le travail de modification du registre directement et d'envoi le wm_settingchange. (Bon pour une utilisation dans setup.py )


0 commentaires