Windows
本页介绍 Windows 的代理环境变量配置,以及 PATH 变量不展开、SSH 会话报「不受信任的装入点」两个问题的排查方法。
配置#
代理通过用户级环境变量设置。
配置代理#
为当前用户设置代理环境变量:
故障排查#
以下问题常见于修改 PATH 后和 SSH 会话中。
改过 PATH 之后 %VAR% 不展开#
原因:PATH 的值类型被改成了 REG_SZ。只有 REG_EXPAND_SZ 类型里的 %USERPROFILE% 这类引用才会展开。[Environment]::SetEnvironmentVariable 写入的是 REG_SZ,用它改一次 PATH,所有 %VAR% 都会变成字面量。系统属性里的图形编辑器也会把它们展开成绝对路径。
PATH 存在注册表的两个位置,登录时机器级在前、用户级在后合并:
改 PATH 时显式指定类型,$v 是新的 PATH 值:
检查类型和原始值:
注意:
- 改完只对新开的终端生效。
- 第三方安装器常用
SetEnvironmentVariable写 PATH,装完软件后类型可能变回REG_SZ。安装软件后再检查一次。 - 系统目录用
%SystemRoot%,JDK、CUDA 用%JAVA_HOME%、%CUDA_PATH%,换版本只改一个变量。%CUDA_PATH%指向当前版本,不要用%CUDA_PATH_V12_9%这种固定版本的变量。 Program Files不要写成%ProgramFiles%,32 位进程里它会展开成Program Files (x86)。
SSH 会话提示不受信任的装入点#
原因:Windows 11 24H2 起,SSH 会话不再穿透部分符号链接和 junction,本地终端不受影响。同样的配置在 Windows 10 22H2 上正常,所以不是配置错误,fsutil behavior set SymlinkEvaluation 也无效。
按被拦截的对象选择修法:
-
junction 被拦:用
mklink /J重建。系统原生 API 建的 junction 能正常穿透: -
WinGet 安装的命令被拦:
WinGet\Links下都是符号链接。把真实目录%LOCALAPPDATA%\Microsoft\WinGet\Packages\<包 ID>加到用户 PATH 前面,写入方法见改过 PATH 之后 %VAR% 不展开。 -
pnpm 安装失败:pnpm 的
node_modules全是 junction,在 SSH 会话里安装必然失败。在本地或远程桌面安装、升级,装好之后通过 SSH 使用不受影响。