【问题标题】:access network path from PowerShell running with Administrative Rights从使用管理权限运行的 PowerShell 访问网络路径
【发布时间】:2020-05-21 15:55:43
【问题描述】:

我有一个名为 P:\ 的 网络路径,当我在标准模式下运行 PowerShell 时,我可以正常访问它。但是当我使用 Administrative Rights 运行 PowerShell 时,它说找不到名为 P:

的驱动器

如何访问路径?

【问题讨论】:

  • 在注册表项“HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System”中将“EnableLinkedConnections”设置为 DWORD 值 1,然后重新启动系统。应用此策略后,创建映射驱动器将链接到两个登录会话。另一方面,使用 subst.exe 或其他任何简单调用 DefineDosDeviceW 的替代驱动器将仅在当前登录会话中创建驱动器,因此必须在链接会话中手动重复该命令。跨度>

标签: windows powershell networking


【解决方案1】:

当您在标准模式下运行 PowerShell 时,您会说:使用当前已通过身份验证的凭据以及会话和上下文运行 PowerShell。这包括您当前会话中的所有驱动器映射。

当您以管理员身份运行 PowerShell 时,第一个问题是:如何验证凭据是否有效?您不能只查看用户名并假设您可以重用现有会话,例如您必须在此时明确检查您是否是管理员组的成员。为了验证凭据,PowerShell 执行身份验证检查,然后获取新的身份验证票证。这个新的身份验证票证创建了新的 PowerShell 会话运行所在的新上下文的基础。

由于它是一个新会话,在全新的上下文中运行,具有新的身份验证票证,因此它不会继承任何映射的驱动器,因为当前的管理会话尚未通过任何映射的驱动器进行身份验证。只有您的其他“非管理”或“正常”会话已通过您的任何映射驱动器进行身份验证。

这意味着默认情况下,您的管理会话开始时没有您之前会话中的任何映射驱动器,并且访问或权限无关紧要,您只是没有使用新的身份验证票证进行身份验证.这意味着,在以管理员身份启动后,您必须手动重新映射所有驱动器,因为您必须使用新的身份验证票证重新验证所有映射。

基本上,如果您需要在管理会话中访问映射的驱动器,则需要重新映射它们。


编辑:

但是,根据@ErykSun 的cmets,@ErykSun 通过设置:EnableLinkedConnections 提供了唯一的解决方法。这是一个非常具体的解决方法,仅适用于登录时使用正确 UAC 设置的 GPO 映射驱动器。

此“新会话”问题是由 Microsoft 引入的新“功能”引起的:UAC 提升(也就是停止以管理员身份运行所有内容)。为了使某些旧版应用程序正常工作,Microsoft 必须添加此注册表项来为映射驱动器创建解决方法,例如最值得注意的是,如果您需要以管理员身份从映射驱动器上运行某些东西(从映射驱动器上运行某些东西并因为找不到自身或所需的其他文件而立即崩溃,这是一种糟糕的用户体验)。

它的工作原理非常巧妙。登录时,它将同时创建 两个会话。您的常规非提升会话,以及提升的管理会话。登录时,创建驱动器映射时,系统会创建将驱动器号与 UNC 路径相关联的符号链接对象。

注意:这仅在登录时使用,因此需要注意的是它仅适用于 GPO 映射驱动器

通过登录脚本映射的驱动器将不起作用,因为您已经“启动”了会话,并且没有链接。与会话期间手动映射的驱动器相同。此外,当 UAC 策略配置为 Prompt for credentials 时,这不会隐式创建第二个管理会话(您假设用户不是管理员),因此以管理员身份运行将创建一个新会话,具有相同的上述问题。

注意,您可以通过 GPO 启用它:

  1. 在本地组策略编辑器中,找到以下组策略路径:

    Local Computer Policy\Windows Settings\Security Settings\Local Policies\Security Options

  2. 将以下策略配置为提示同意:

    用户帐户控制:管理员批准模式下管理员的提升提示行为

或者通过设置注册表项:

  1. 打开注册表
  2. 找到并右键单击以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

  3. 选择“新建”并单击 DWORD(32 位)值

  4. 命名:EnableLinkedConnections
  5. 右键单击EnableLinkedConnections,然后单击“修改”
  6. 在“数值数据”框中,输入1,然后点击确定
  7. 退出注册表编辑器,然后重新启动计算机

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多