Windows user environment variable vs. system environment variable

后端 未结 2 1225
醉梦人生
醉梦人生 2021-02-05 13:29

In Windows, is there any shell/PowerShell command to list user environment variable and system environment variable separately?

If I do -

SET TEMP


        
相关标签:
2条回答
  • 2021-02-05 13:43

    In PowerShell, there's no cmdlet for it, but you can use the underlying .NET methods in the Environment class:

    Write-Host "Machine environment variables"
    [Environment]::GetEnvironmentVariables("Machine")
    
    Write-Host "User environment variables"
    [Environment]::GetEnvironmentVariables("User")
    
    # This should be the same as 'Get-ChildItem env:', although it isn't sorted.
    Write-Host "Process environment variables"
    [Environment]::GetEnvironmentVariables("Process")
    
    0 讨论(0)
  • 2021-02-05 13:51

    Use the following batch file:

    @echo off
    for /f "tokens=3 usebackq" %%a in (`reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" ^| findstr TEMP`)  do @echo System variable TEMP = %%a
    for /f "tokens=3 usebackq" %%a in (`reg query "HKEY_CURRENT_USER\Environment" ^| findstr TEMP`)  do @echo Current user variable TEMP = %%a
    

    To use from a command line replace %% with %.

    Output:

    System variable TEMP = %SystemRoot%\TEMP
    Current user variable TEMP = %USERPROFILE%\AppData\Local\Temp
    

    Note that the HKEY_CURRENT_USER takes precedance (but for some reason %USERPROFILE% is expanded to a shortname when evaluating %TEMP%):

    echo %USERPROFILE%
    USERPROFILE=C:\Users\DavidPostill
    
    echo %TEMP%
    C:\Users\DAVIDP~1\AppData\Local\Temp
    
    0 讨论(0)
提交回复
热议问题