8

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

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

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

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

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

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

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

4

2 回答 2

2

这是设计使然。

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

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

于 2009-08-12T16:30:42.953 回答
2

看看这个链接:Regedit Link

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

编辑:

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


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

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

我将很快发布更多信息。

于 2009-08-13T13:40:58.797 回答