为什么 cmd.exe 在“运行方式...”时无法访问字母映射驱动器

Alo*_*dal 5 command-line windows-xp

问题

我在 VMWare 中安装了 Windows XP SP3,安装非常新,只安装了一堆应用程序(浏览器、Office)。

当我:

  1. 以本地管理员身份登录
  2. 使用资源管理器的 GUI,我将远程服务器连接为 X:
  3. 通过“开始”菜单链接启动“命令提示符”,方法之一是:
    a) 手动启动链接
    b) 右键单击​​链接,选择“运行方式...”并填写同一用户的凭据

前一种情况工作得很好,但在后一种情况下,cmd.exe无法访问X:

C:\Documents and Settings\Administrator>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
Unavailable  X:        \\server\share\folder      Microsoft Windows Network
The command completed successfully.

C:\Documents and Settings\Administrator>x:
The system cannot find the drive specified.

C:\Documents and Settings\Administrator>dir x:\
The system cannot find the path specified.

C:\Documents and Settings\Administrator>
Run Code Online (Sandbox Code Playgroud)

预分析

我比较了可以找到的有关进程的各种属性(我不确定它们是否都相关):环境、打开的句柄、打开的 DLL、进程资源管理器中的“安全”选项卡,所有这些都是相同的。

我发现的一件事是,在使用 Process Monitor 观看尝试时,接下来的操作还要执行四个步骤:

"Time of Day","Process Name","PID","Operation","Path","Result","Detail"
"10:55:33.4784227 AM","cmd.exe","2792","RegOpenKey","HKCU","SUCCESS","Desired Access: Maximum Allowed"
"10:55:33.4785212 AM","cmd.exe","2792","RegOpenKey","HKCU\Software\Policies\Microsoft\Control Panel\Desktop","NAME NOT FOUND","Desired Access: Read"
"10:55:33.4785569 AM","cmd.exe","2792","RegOpenKey","HKCU\Control Panel\Desktop","SUCCESS","Desired Access: Read"
"10:55:33.4786210 AM","cmd.exe","2792","RegQueryValue","HKCU\Control Panel\Desktop\MultiUILanguageId","NAME NOT FOUND","Length: 256"
"10:55:33.4786650 AM","cmd.exe","2792","RegCloseKey","HKCU\Control Panel\Desktop","SUCCESS",""
"10:55:33.4787131 AM","cmd.exe","2792","RegCloseKey","HKCU","SUCCESS",""
"10:55:33.4912359 AM","cmd.exe","2792","CreateFile","X:","SUCCESS","Desired Access: Read Data/List Directory, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened"
"10:55:33.4924104 AM","cmd.exe","2792","QueryNameInformationFile","X:","SUCCESS","Name: \server\share\folder"
"10:55:33.4924860 AM","cmd.exe","2792","QueryInformationVolume","X:","SUCCESS","VolumeCreationTime: 9/6/2005 2:05:04 PM, VolumeSerialNumber: 109F-0912, SupportsObjects: True, VolumeLabel: DATA"
"10:55:33.4932539 AM","cmd.exe","2792","CloseFile","X:","SUCCESS",""
"10:55:33.4937810 AM","cmd.exe","2792","RegOpenKey","HKCU","SUCCESS","Desired Access: Maximum Allowed"
"10:55:33.4939097 AM","cmd.exe","2792","RegOpenKey","HKCU\Software\Policies\Microsoft\Control Panel\Desktop","NAME NOT FOUND","Desired Access: Read"
"10:55:33.4939451 AM","cmd.exe","2792","RegOpenKey","HKCU\Control Panel\Desktop","SUCCESS","Desired Access: Read"
"10:55:33.4940098 AM","cmd.exe","2792","RegQueryValue","HKCU\Control Panel\Desktop\MultiUILanguageId","NAME NOT FOUND","Length: 256"
"10:55:33.4940548 AM","cmd.exe","2792","RegCloseKey","HKCU\Control Panel\Desktop","SUCCESS",""
"10:55:33.4941023 AM","cmd.exe","2792","RegCloseKey","HKCU","SUCCESS",""
Run Code Online (Sandbox Code Playgroud)

失败的日志中缺少步骤 CreateFile、Query* 和 CloseFile。

什么会导致这种差异?这是一个错误吗?

use*_*686 6

从 Windows XP 开始,每个LSA 登录会话终端服务会话无关)都有自己的一组驱动器号分配。如果您使用运行方式... – 无论帐户相同还是不同 – 该功能仍会使用给定的凭据创建单独的登录会话。

从 Windows 8 或 Server 2012(大约)开始,您可以启用EnableLinkedConnections注册表值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System以允许 UAC 提升的应用程序共享常规驱动器映射。

更多的: