环境变量存储在注册表中的哪里?

Bri*_*ndy 185 registry environment-variables

我需要远程访问环境变量.要做到这一点,我认为最好的方法是从注册表中读取它.

环境变量存储在注册表中的哪里?

Ste*_*ler 274

这是他们通过Server 2012 R2存储在XP上的地方:

用户变量

HKEY_CURRENT_USER\Environment
Run Code Online (Sandbox Code Playgroud)

系统变量

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Run Code Online (Sandbox Code Playgroud)

  • 您无需重新启动.只需杀死Explorer.exe并将其恢复活着.它是例如cmd.exe的父进程(从"开始"菜单启动时) (21认同)
  • 用户路径变量(我的文档,AppData等)存储在`HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders`中 (10认同)
  • 请记住重新启动系统以使更改生效. (6认同)
  • 进程在启动时读入系统env变量.因此,对于像IIS这样的东西,重新启动该服务应该引入更新的值. (3认同)
  • 其他进程怎么样 - 比如IIS?我猜测Explorer.exe不是那些的父级,所以需要重新启动? (2认同)
  • @ 0x6B6F77616C74:注销就可以应用任何环境变量。 (2认同)
  • Windows 7使用相同的注册表位置. (2认同)
  • @gies0r 当然 - 你只需转到“HKEY_USERS\The-other-users-SID\...”或任何地方。当您查看“HKEY_CURRENT_USER”时,您正在查看“您的”SID 的该键的别名。不过,权限可能会妨碍您。提示:在您的计算机上创建的第一个用户可能具有以 -1001 结尾的 SID;-1000 用于内置管理员帐户(目前默认情况下已禁用)。前面的三个大数字是“机器 ID”,它是为每个 Windows 安装随机生成的 - 或者如果您位于域中,则来自您的域控制器。 (2认同)
  • 可能值得一提的是,还有一些环境变量位于“HKEY_CURRENT_USER\Volatile Environment”下 (2认同)

Jak*_*son 21

我意识到这已经过时了,但在Windows 7中有一种更有效的方法.默认安装SETX并支持连接到其他系统.

要修改您将使用的远程系统全局环境变量

setx /m /s HOSTNAME-GOES-HERE VariableNameGoesHere VariableValueGoesHere
Run Code Online (Sandbox Code Playgroud)

这不需要重新启动资源管理器.

  • 小心这一点,因为setx在1024个字符之后截断了所有内容!https://superuser.com/questions/387619/overcoming-the-1024-character-limit-with-setx (7认同)

mas*_*ilo 6

指令:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
reg query HKEY_CURRENT_USER\Environment
Run Code Online (Sandbox Code Playgroud)

电源外壳:

Get-Item "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Get-Item HKCU:\Environment
Run Code Online (Sandbox Code Playgroud)

Powershell/.NET:(参见EnvironmentVariableTarget 枚举

[System.Environment]::GetEnvironmentVariables([System.EnvironmentVariableTarget]::Machine)
[System.Environment]::GetEnvironmentVariables([System.EnvironmentVariableTarget]::User)
Run Code Online (Sandbox Code Playgroud)