启用EnableLinkedConnections注册表项可解决UAC下提升程序无法访问映射驱动器的问题,其原理是强制将映射符号链接同步至标准与管理员两个隔离会话;同时应将UAC提示行为设为“提示同意”,确保映射在标准用户上下文中执行,并优先使用UNC路径替代盘符。
uac 启用后,映射的网络驱动器在提升权限的程序(如管理员模式的命令提示符、powershell 或某些安装工具)中不可见,根本原因是 windows 创建了两个隔离的登录会话:标准用户会话(explorer 和普通应用运行于此)和提升的管理员会话。驱动器映射只存在于标准会话中,不会自动继承到提升会话——这不是“丢失”,而是会话隔离机制的正常表现。解决的关键不是绕过 uac,而是让两个会话能共享映射状态,或确保关键操作在正确上下文中执行。
启用 EnableLinkedConnections 注册表项
这是最直接有效的系统级修复,它强制将驱动器映射符号链接写入两个关联的登录会话,使提升环境也能识别映射盘符。
- 以管理员身份打开注册表编辑器(regedit)
- 定位到:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem
- 右键空白处 → 新建 → DWORD (32 位) 值,命名为 EnableLinkedConnections
- 双击该值,将“数值数据”设为 1,基数选“十进制”
- 重启计算机生效
调整 UAC 提升行为策略
当 UAC 策略被设为“提示输入凭据”时,会额外创建一个独立登录会话,加剧映射隔离问题。改为“提示同意”可避免该额外会话,保留原有双会话结构并兼容 EnableLinkedConnections。
- 运行 gpedit.msc(仅限专业版/企业版)
- 导航至:本地计算机策略 → 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项
- 找到策略:用户帐户控制:管理员审批模式下管理员提升提示的行为
- 双击 → 选择“提示同意” → 确定
- 无需重启,策略立即生效
确保映射在标准用户上下文中执行
很多自动化脚本(如登录启动项、组策略脚本)若以提升权限运行,会导致映射仅存在于管理员会话,对桌面和资源管理器无效。所有映射操作必须与 Explorer.exe 权限一致。
- 批处理脚本(.bat)不要用“以管理员身份运行”,应放入 shell:startup 文件夹
- PowerShell 脚本避免使用
Start-Process -Verb RunAs,改用常规权限调用New-SmbMapping - 组策略驱动器映射务必勾选“运行在用户上下文”,否则会以 SYSTEM 账户执行,无法访问域认证资源
替代方案:优先使用 UNC 路径而非盘符
对于需要在提升环境中访问网络资源的场景(如安装软件、复制系统文件),直接使用 \servershare 路径比依赖 Z: 更可靠,完全规避会话隔离问题。
- 在命令提示符或 PowerShell 中,直接操作
copy \nasackup*.log C: emp - 脚本中用
Push-Location \fileserverdept替代cd Z: - 长期来看,减少对盘符映射的依赖,能显著降低 UAC 相关故障率


















