我们有一个以编程方式映射网络驱动器的应用程序。在使用UAC的Vista上,我们遇到了一些奇怪的问题。
我们的应用程序将驱动器映射为非提升的,因此如果用户浏览资源管理器并双击以运行exe,则会提示输入UAC。因此,当他们批准它时,它会提示输入共享的用户名/密码...因为凭据已保存,所以很奇怪。
事实证明,提升的进程无法访问从非提升进程映射的映射驱动器。
要查看此问题,请执行以下步骤:
此时您可以运行简单的“net use”并查看提升的cmd上的连接是不可用的,但另一个非提升的cmd看到它是正常的。
有没有人知道解决此问题的解决方法?或者可能是将网络驱动器映射到“所有用户”的方法吗?
答案 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
它们描述了一个注册表项,允许提升的用户访问映射的驱动器,反之亦然。这解决了我所有的问题,而且正是我所寻找的。 p>
编辑:
原始链接已死,但这是从www.archive.org的2009年1月24日快照复制的文字:
如果您发现自己无法访问管理令牌中的映射驱动器,请尝试以下操作。当作为受保护的管理员运行时,你有两个令牌,这个键将保持两个tokes的连接(这是我的理解)。它还可以帮助解决登录脚本的问题。
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\系统 EnableLinkedConnections =(dword)1
此文档中的“'组策略脚本可能因用户帐户控制而失败”部分也可以使用。
我将很快发布更多相关信息。