Meecht
Meecht

Reputation: 23

Changing a value in the Path environment variable

My company uses a program that breaks when Java is updated. This is due to the program install (I assume) placing a static path to Java in the Path environment variable. For example, the current Path variable in question is C:\Program Files (x86)\Java\jre1.8.0_171\bin\client, but if Java is updated and the program is re-installed, the Path variable will update to include C:\Program Files (x86)\Java\jre1.8.0_181\bin\client.

I was able to find exactly what I needed (I think) here https://blogs.technet.microsoft.com/heyscriptingguy/2007/11/08/hey-scripting-guy-how-can-i-remove-a-value-from-the-path-environment-variable/, but that code is for Powershell 2.0 and doesn't work on Windows 10.

Is this still possible in Windows 10?

Upvotes: 2

Views: 1461

Answers (2)

JosephWorks
JosephWorks

Reputation: 692

Java is not a Windows issue, and therefore TechNet will not help you. There is a fix below.

Windows 10 and Windows 8:

  • Open the Legacy Control Panel

  • Click the Advanced system settings link.

  • Click Environment Variables. In the section System Variables, find the PATH environment variable and select it.

  • Click Edit.

  • If the PATH environment variable does not exist, click New.

  • In the Edit System Variable (or New System Variable) window, specify the value of the PATH environment variable.

  • Click OK.

  • Close all remaining windows by clicking OK.

  • Reopen the PowerShell window, and run your Java code.

Source: https://www.java.com/en/download/help/path.xml

Upvotes: 1

Maximilian Burszley
Maximilian Burszley

Reputation: 19664

You can use the System.Environment class to modify your environment variables machine-wide:

# get the PATH and split it up
$PATH = [Environment]::GetEnvironmentVariable('PATH', 'Machine') -split ';'

# filter out the JRE paths
$PATH = $PATH -notmatch 'java\\jre'
# get any real JRE paths
$PATH += (Get-Item -Path "${Env:ProgramFiles(x86)}\Java\jre*\bin\client").FullName
$PATH = $PATH -join ';'

[Environment]::SetEnvironmentVariable('PATH', $PATH, 'Machine')

Note: You will need to run your shell elevated to execute these commands.

Upvotes: 1

Related Questions