¿Evitar que el sistema de Windows% PATH% se anteponga al usuario% PATH?

19

Sé cómo configurar variables de entorno específicas del sistema o del usuario:

Variables de entorno de Windows

Ahora, el problema es que la PATHvariable se trata de manera tal que el valor que ingrese para la RUTA del usuario se agregará automáticamente a la RUTA del sistema y esa será la variable de RUTA efectiva.

Es decir, digamos que tengo

(SISTEMA) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...

y (USUARIO) PATH=C:\Program Files\Bar\bin(tenga en cuenta que no hay %PATH%en este valor)

entonces la variable de entorno resultante para este usuario será:

(eficaz) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin

Sin embargo, preferiría que para una cuenta de usuario de SO muy específica, la variable de entorno PATH debería tener el bar\bindirectorio al comienzo de la RUTA en lugar de al final.

¿Hay una manera adecuada de decirle a Windows que anule por completo la PATHvariable de un usuario con el valor para ese usuario en lugar de agregarlo a la PATHvariable del sistema ?

Nota: Obviamente, desde un archivo por lotes, todo esto no importa, ya que puede configurar y ajustar los env.vars como desee.

Martín
fuente
¿Por qué no ignorar la sección USUARIO? Elimine la variable Ruta del USUARIO y coloque todo en la variable Ruta del SISTEMA, en el orden que desee.
Kevin Fegan el
1
@KevinFegan: Bueno, porque algunos servicios en la máquina dependen de ese SISTEMA PATHy esta cuenta de usuario específica sería mejor atendida por tener un diferente PATH. Sé que hay muchas soluciones alternativas, pero estaba interesado en saber si hay algo fuera de la caja / en el sistema operativo / nivel de registro para lograr esto.
Martin

Respuestas:

3

Si solo necesita que esto funcione para las sesiones del símbolo del sistema, cree un archivo por lotes de perfil / inicio y configúrelo en el registro, según /programming/17404165/how-to-run-a-command-on -command-prompt-startup-in-windows . P.ej,

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^
  /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

Luego simplemente haga modificaciones a la RUTA en ese archivo por lotes. P.ej,

SET USER_PATH=c:\whatever
SET PATH=%USER_PATH%;%PATH%
G-Wiz
fuente
0

Tuve el mismo problema y esto funcionó para mí:

Puede obtener la "variable de ruta de usuario" a través de:

>reg query HKCU\Environment /v path

La salida (en mi máquina) es:

HKEY_CURRENT_USER\Environment
    path    REG_SZ    C:\Program Files (x86)\GnuWin32\bin

Pero luego tienes que analizar esto y usar la parte relevante.

He leído aquí la solución aquí y probado en mi máquina.

usuario2442366
fuente
-1

No sé cómo ignorar la variable del sistema, pero sé que si usa variables de sesión (a través del SETcomando), tienen prioridad sobre otras variables. Entonces puede usar la SET PATH=C:\Program Files\Bar\bininstrucción y su ruta deseada será la primera parte de la variable.

Aquí hay una referencia válida, y reporto aquí un período simple desde esa página:

Si las variables con el mismo nombre se almacenan como variables de entorno de usuario y máquina, la variable de usuario tendrá prioridad. Si se crea una variable de sesión que tendrá prioridad sobre cualquier variable de entorno de usuario y / o máquina con el mismo nombre.

Gabriele Bertolucci
fuente
Esa es una referencia útil, pero la primera oración que citó es una generalización excesiva. La PATHvariable es una excepción (caso especial) - la variable de usuario no no tienen precedencia sobre la variable del sistema. El hecho de que una "variable de sesión" tenga prioridad sobre las variables preestablecidas por el usuario y el sistema es cierto, pero ¿cómo se configura automáticamente una variable de sesión para un usuario?  G-Wiz ha respondido esa pregunta y, AFAICS, no ha agregado nada a esa respuesta.
Scott