【问题标题】:Vista UAC - Trouble Mapping Network DrivesVista UAC - 故障映射网络驱动器
【发布时间】:2010-11-19 00:29:01
【问题描述】:

我们有一个以编程方式映射网络驱动器的应用程序。在开启 UAC 的 Vista 上,我们遇到了一些奇怪的问题。

我们的应用程序映射非提升驱动器,因此如果用户浏览资源管理器并双击运行 exe,它会提示输入 UAC。因此,当他们批准它时,它会提示输入共享的用户名/密码...奇怪,因为凭据已保存。

事实证明,提升的进程无法访问从非提升的进程映射的映射驱动器。

要查看此问题的实际效果,请执行以下步骤:

  • 在没有 UAC 的情况下运行 cmd.exe
  • 运行“net use w:\yourHostname\yourShare /user:yourUser yourPassword /persistent:yes”
  • 以管理员身份运行 cmd.exe
  • 键入“w:”,然后查看错误消息

此时您可以运行普通的“net use”并看到提升的 cmd 上的连接不可用,但其他非提升的 cmd 认为它正常。

有人知道解决此问题的解决方法吗?或者可能是一种将网络驱动器映射到“所有用户”的方法?

【问题讨论】:

  • 这个问题可能属于服务器故障。
  • 不,这是一个关于编程的问题——他们需要跨海拔继承特权。虽然我不知道答案:)
  • 这绝对是一个编程问题,我们使用应用程序中的 WNetAddConnection2 和 WNetCancelConnection2,但这类似于“net use”命令。

标签: windows uac windows-vista file-sharing net-use


【解决方案1】:

这是设计使然。

即使用户帐户相同,但提升版本具有管理员组成员身份和附加权限的令牌,令牌是独立创建的,因此具有不同的 LUID,并且在内核看来来自不同的用户登录.由于它们来自不同的登录,因此它们之间不共享映射的驱动器。

http://blogs.msdn.com/cjacks/archive/2007/02/19/mapped-network-drives-with-uac-on-windows-vista.aspx 对此进行了更详细的讨论。

【讨论】:

  • 那么如果Vista上的用户映射了一个网络驱动器,他们基本上就不能从映射的驱动器运行任何exe了?仅当他们的 Windows 帐户用户名/密码与映射驱动器的用户名/密码匹配时才有效?这似乎是“设计上”的糟糕情况。
  • 即使他们有相同的用户名,提升与非提升仍然是不同的用户。普通用户应该能够将驱动器映射到管理员用户帐户吗?如果普通用户蹲在驱动器映射上而不是管理员需要,这会导致 DOS 吗?如果普通用户将驱动器映射定向到管理员不期望的某个位置并导致他们运行不同的二进制文件,是否会导致 EOP?
  • 我是说微软执行得很差。 Elevated 不应该是任何形式或方式的不同用户,在我看来,他们似乎走捷径。对于这种情况,没有解决方法吗?
  • 不善待人。安装程序询问在哪里安装某些东西 - 最终用户尝试浏览到映射的文件夹 - 但是什么?我所有的映射驱动器在哪里?它们消失了,因为安装程序进程必须运行提升。在什么宇宙中,管理员拥有比普通用户更少的权限是有意义的?不,UAC 漏洞百出,只是表面上的润唇膏,而不是真正的 Windows 下安全尝试。
【解决方案2】:

查看此链接:Regedit Link

它们描述了一个注册表项,允许提升的用户访问映射的驱动器,反之亦然。这解决了我的所有问题,正是我想要的。

编辑:

原始链接已失效,但这里是复制自 2009 年 1 月 24 日快照www.archive.org 的文本:


如果您发现您无权从您的管理员令牌访问映射的驱动器,请尝试以下操作。当以受保护的管理员身份运行时,您有两个令牌,并且此密钥将维持两个令牌的连接(无论如何这是我的理解)。它还可以帮助解决登录脚本的问题。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System EnableLinkedConnections =(dword)1

本文档的“'组策略脚本可能因用户帐户控制而失败”部分也很有用。

http://technet2.microsoft.com/WindowsVista/en/library/5ae8da2a-878e-48db-a3c1-4be6ac7cf7631033.mspx?mfr=true

我将很快发布有关此的更多信息。

【讨论】:

  • 这应该是注册表中的默认设置。除非它为低权限用户提供了访问特权共享的方法,否则这应该是一个单独处理的问题。
  • 此解决方案被 Microsoft 标记为不受支持的解决方法,它会使您的系统不安全。使用它需要您自担风险...
  • 我不确定允许提升的进程访问由非提升的进程创建的网络共享是多么不安全。门中不是已经有一个提升的过程吗?这仍然是一个奇怪的问题,我宁愿使用不受支持的解决方法来解决大多数人的问题。
  • 是的,不知道如何找回它。这个问题来自 2009 年。
  • 也许这是具有相同信息的链接,因为原版已经死了? support.microsoft.com/kb/937624?wa=wsignin1.0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多