Quelle est la différence entre
SETX
ySET
?
D'après ce que j'ai compris :
Les deux sont utilisés pour définir les variables d'environnementSETX
est pour les variables utilisateur.SET
est pour les variables Shell.
Quelle est la différence entre
SETX
ySET
?
D'après ce que j'ai compris :
Les deux sont utilisés pour définir les variables d'environnementSETX
est pour les variables utilisateur.SET
est pour les variables Shell.
J'ai bien peur que ce ne soit pas aussi simple. Les variables d'environnement ne sont pas limitées par la portée, comme vous le suggérez, mais vous avez raison de dire que la durée de vie de la valeur dans la variable est différente lorsque l'on compare les verbes.
set
modifie les valeurs d'environnement du Shell actuel (de la fenêtre), et le changement est disponible immédiatement, mais il est temporaire. Le changement n'affectera pas les autres shells en cours d'exécution, et dès que vous fermez la Shell, la nouvelle valeur est perdue jusqu'à ce que vous exécutiez à nouveau set.
setx
modifie la valeur de façon permanente, ce qui affecte tous les shells futurs, mais ne modifie pas l'environnement des shells déjà en cours d'exécution. Vous devez quitter le Shell et le rouvrir avant que la modification soit disponible, mais la valeur restera modifiée jusqu'à ce que vous la changiez à nouveau.
Voir ici pour un exemple : http://batcheero.blogspot.com/2008/02/set-and-setx.html
En fait, nous pouvons définir une variable à trois niveaux :
1. Shell
2. Utilisateur
3. Système (machine) ou global
C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.
SET [variable=[string]]
variable Specifies the environment-variable name.
string Specifies a series of characters to assign to the variable.
Type SET without parameters to display the current environment variables.
C:\Users\977246>setx /?
SetX has three ways of working:
Syntax 1:
SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
Syntax 2:
SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
Syntax 3:
SETX [/S system [/U [domain\]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
Description:
Creates or modifies environment variables in the user or system
environment. Can set variables based on arguments, regkeys or
file input.
To remove the variable set value to empty string as follows
Example: setx path ""
Dans l'interface graphique, les variables d'environnement de l'utilisateur et du système.
J'ajoute un point qui n'a pas été abordé par les autres répondants.
Pour définir une variable d'environnement système plutôt qu'une variable d'environnement utilisateur, il suffit d'utiliser l'option /m dans la commande setx et de l'exécuter à partir d'une invite de commande élevée (administrateur).
setx variable value /m
Exemple : Ouvrez l'invite de commande en tant qu'administrateur et exécutez
setx Path "%Path%;C:\Users\User\Libs" /m
Explication : La commande ci-dessus ajoutera " C:\Users\User\Libs "à la variable de chemin (variable d'environnement système) déjà existante.
Sans le /m il modifiera ou créera uniquement une variable de chemin d'accès de niveau utilisateur.
Extrait du manuel de l'utilisateur de setx,
/M Spécifie que la variable doit être définie en dans l'ensemble du système (HKEY_LOCAL_MACHINE). environnement. La valeur par défaut est de définir la variable dans l'environnement HKEY_CURRENT_USER. de l'utilisateur.
setx.exe
est un programme qui définit les variables d'environnement de l'utilisateur/du système dans le fichier registre qui est utilisé pour la création de processus futurs. set
est une commande qui montre le processus les variables d'environnement dans le bloc de paramètres du PEB du processus en cours (qui affichent les variables utilisateur et système ainsi que les variables définies par le processus en cours ou le processus parent en utilisant set
), ainsi que de permettre à plus de variables d'y être définies par le processus actuel, et les changements de l'environnement peuvent être visualisés depuis l'explorateur de processus.
cmd /c set variable=value
va définir des variables pour le processus enfant cmd.exe
qu'il crée (qui s'attache au parent cmd.exe
et n'alloue pas sa propre fenêtre de console, et hérite de l'environnement du parent), de sorte qu'il ne prendra pas effet lorsque vous exécuterez set
après cela dans la même fenêtre, parce qu'il se réfère au processus parent. cmd.exe
. Les processus de niveau supérieur héritent leur environnement directement du registre et de l explorer.exe
met dynamiquement à jour ses variables d'environnement (contrairement à la plupart des autres applications), donc lorsque vous setx
il ne mettra même pas à jour l'environnement du processus en cours, mais seulement le registre, qui est soit lu par l'utilisateur, soit modifié par l'utilisateur. explorer.exe
ou le explorer.exe
est mis à jour par la fonction de l'API Windows qui définit la variable d'environnement (moins probable), de sorte que les futures ouvertures du processus cmd.exe
s héritent explorer.exe
L'environnement de l'enfant, car il s'agit d'un enfant.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.