当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 映射的网络驱动器未显示在提升的程序中

作者:精品下载站 日期:2024-12-14 23:00:57 浏览:15 分类:玩电脑

映射的网络驱动器未显示在提升的程序中


如果您使用映射的网络驱动器,您可能会注意到它们没有显示在以管理员权限运行的应用程序(包括 cmd 和 PowerShell)中。默认的用户帐户控制 (UAC) 设置不允许访问映射的网络驱动器(通过

net use

)来自以提升模式运行的应用程序(以管理员身份运行)。这意味着当您以提升的权限运行命令提示符或文件管理器(如 Total Commander)时,它们不会显示已安装共享文件夹的驱动器号。

如果满足以下条件,您可能会遇到此类问题:

  • 网络驱动器在用户会话中映射(通过 GPO 或手动通过

    net use

    );

  • 计算机上启用了 UAC(GPO 参数用户帐户控制:管理员批准模式下管理员提升提示的行为设置为默认值“提示输入凭据”);

    [玩转系统] 映射的网络驱动器未显示在提升的程序中

  • 当前用户拥有计算机的本地管理员权限,并以“以管理员身份运行”模式运行应用程序。

在这种情况下,网络驱动器显示在 Windows 文件资源管理器和应用程序中,但不会显示在以提升模式运行的任何应用程序中。

在本文中,我们将展示如何允许从 Windows 10 上以提升模式运行的应用程序访问映射的网络驱动器。通过组策略映射的网络驱动器和用户连接的文件夹都会出现此问题。

重要。强烈不建议完全禁用 UAC,即使对于特定程序也是如此。

映射的网络驱动器未显示在 Windows 应用程序中

让我们检查一下您是否无法从启用了 UAC 的提升应用程序访问以正常模式连接的映射网络驱动器。例如,让我们打开具有用户权限的命令提示符,并检查是否可以访问映射网络驱动器 Z:\ 的内容。

Net use
Dir z:

该命令应列出共享网络文件夹的内容。

[玩转系统] 映射的网络驱动器未显示在提升的程序中

如果您以管理员身份在当前会话中打开命令提示符,并尝试访问同一驱动器 - 您将收到一条消息,表明尚未找到驱动器的路径:

The system cannot find the path specified.

[玩转系统] 映射的网络驱动器未显示在提升的程序中

当您经常在提升模式下运行应用程序时,Windows 的这种行为可能会带来一些不便。可以在没有管理员权限的情况下运行应用程序,但这并不总是适用。

为什么会发生这种情况? 这个特性与具有本地管理员权限的用户的 UAC 机制有关。问题是,当该用户登录时,会创建两个访问令牌:第一个令牌提供具有禁用管理员权限的访问权限(经过过滤的访问令牌,大多数应用程序都在使用该令牌运行),第二个令牌是在系统中具有完全权限的管理员令牌(UAC 批准提升的所有应用程序都在此上下文中运行)。

您可以使用

whoami /all

在同一用户的两个 cmd.exe 会话(正常和提升)中运行命令并比较当前权限,可以看到它们有很大不同。下表列出了每个会话中安全组和当前权限的差异。

Normal user sessionElevated user sessionSecurity group

Mandatory Label\Medium Mandatory Level Label S-1-16-8192Mandatory Label\High Mandatory Level Label S-1-16-12288PrivilegesSeLockMemoryPrivilege

SeMachineAccountPrivilege

SeShutdownPrivilege

SeChangeNotifyPrivilege

SeUndockPrivilege

SeIncreaseWorkingSetPrivilege

SeTimeZonePrivilegeSeLockMemoryPrivilege

SeIncreaseQuotaPrivilege

SeMachineAccountPrivilege

SeSecurityPrivilege

SeTakeOwnershipPrivilege

SeLoadDriverPrivilege

SeSystemProfilePrivilege

SeSystemtimePrivilege

SeProfileSingleProcessPrivilege

SeIncreaseBasePriorityPrivilege

SeCreatePagefilePrivilege

SeBackupPrivilege

SeRestorePrivilege

SeShutdownPrivilege

SeSystemEnvironmentPrivilege

SeChangeNotifyPrivilege

SeRemoteShutdownPrivilege

SeUndockPrivilege

SeManageVolumePrivilege

SeImpersonatePrivilege

SeCreateGlobalPrivilege

SeIncreaseWorkingSetPrivilege

SeTimeZonePrivilege

SeCreateSymbolicLinkPrivilege

SeDelegateSessionUserImpersonatePrivilege

[玩转系统] 映射的网络驱动器未显示在提升的程序中

启用 UAC 后,同一用户下的应用程序可以在两种上下文中运行(特权和非特权)。当您映射共享网络文件夹时,系统会创建符号链接 (DosDevices),用于存储映射到 UNC 路径的驱动器号。这些链接与当前进程访问令牌相关联,并且对其他令牌不可用。

相反的问题也可能发生:当计算机上具有管理员权限的用户使用组策略登录脚本、计划任务或 SCCM 作业(以提升的权限运行)连接网络驱动器时,这些驱动器在文件资源管理器(非特权进程)中对用户不可见。

提示。您可以使用一个简单的技巧以管理员权限(提升)在 Windows 中运行文件资源管理器。

作为解决方法,您可以使用以下命令从提升的命令提示符挂载网络驱动器:

net use

或者

rundll32 SHELL32.dll,SHHelpShortcuts_RunDLL Connect

Enablelinkedconnections:在提升的应用程序中启用映射驱动器

有一个更简单的解决方案。要实现它,您必须对注册表进行一些更改:

  1. 打开注册表编辑器(regedit.exe);

  2. 转到注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System;

  3. 创建一个名为 EnableLinkedConnections 和值 1 的新参数(DWORD 类型);

    [玩转系统] 映射的网络驱动器未显示在提升的程序中

    reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLinkedConnections" /t REG_DWORD /d 0x00000001 /f

    或使用 PowerShell:

    New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name EnableLinkedConnections -Value 1 -PropertyType 'DWord'
  4. 重新启动计算机(或使用以下命令重新启动 LanmanWorkstation 服务:

    get-service LanmanWorkstation |Restart-Service -Force

    ,然后重新登录Windows)。

重新启动计算机后,确保用户可以在以管理员权限运行的程序中看到映射的网络驱动器。相反的说法是正确的:以提升模式映射的所有网络驱动器也将在非特权用户会话中可用。

这适用于从 Vista 到 Windows 10/Windows Server 2019 的所有 Windows 版本。

[玩转系统] 映射的网络驱动器未显示在提升的程序中

注意。不幸的是,没有 GPO 设置来启用 EnableLinkedConnections 模式。为了在域计算机上应用此设置,您需要通过 GPP 部署此注册表参数。

工作原理?启用 EnableLinkedConnections 注册表参数后,LanmanWorkstation 和 LSA (lsass.exe) 将检查与当前用户会话关联的第二个访问令牌。如果找到此令牌,映射的网络驱动器列表将从一个令牌复制到另一个令牌。因此,在特权模式下映射的网络驱动器在正常模式下将是可见的,反之亦然。

提示。作为替代解决方案,您可以创建指向目标共享网络文件夹的符号链接。例如如下:

mklink /D c:\docs \dublin-fs1\docs

您可以在正常模式和提升模式下访问此驱动器。应该注意的是,此方法的缺点之一是您以当前用户身份访问共享文件夹。不可能使用其他用户的帐户,如以下情况:

net use

命令。

启用 EnableLinkedConnections 参数后,映射的驱动器也可以从当前用户下启动的计划任务中使用。如果该任务以 LocalSystem 或其他用户身份运行,则当前用户的映射网络驱动器将不可用。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯