Vista UAC - 故障映射网络驱动器

时间:2009-08-12 15:52:14

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

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

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

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

要查看此问题,请执行以下步骤:

  • 运行没有UAC的cmd.exe
  • 运行“net use w:\ yourHostname \ yourShare / user:yourUser yourPassword / persistent:yes”
  • 以管理员身份运行cmd.exe
  • 输入“w:”,并看到错误消息

此时您可以运行简单的“net use”并查看提升的cmd上的连接是不可用的,但另一个非提升的cmd看到它是正常的。

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

2 个答案:

答案 0 :(得分:2)

这是设计的。

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

http://blogs.msdn.com/cjacks/archive/2007/02/19/mapped-network-drives-with-uac-on-windows-vista.aspx更详细地讨论了这一点。

答案 1 :(得分:2)

点击此链接:Regedit Link

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

编辑:

原始链接已死,但这是从www.archive.org的2009年1月24日快照复制的文字:


如果您发现自己无法访问管理令牌中的映射驱动器,请尝试以下操作。当作为受保护的管理员运行时,你有两个令牌,这个键将保持两个tokes的连接(这是我的理解)。它还可以帮助解决登录脚本的问题。

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\系统 EnableLinkedConnections =(dword)1

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

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

我将很快发布更多相关信息。