Why doesn't the New Folder command work in the root of a redirected drive resource in a Remote Desktop session?
When you connect to another computer via Remote Desktop, you have the option of injecting your local drives into the remote computer, known as Device and Resource Redirection. These injected drives are available under the UNC
\\tsclient\X where X is a drive letter on the local machine.
TSCLIENT combines a bunch of internal technical terminology, so it makes perfect sense to the people who wrote it, but not as much to outsiders. (They may have chosen this name just to make themselves look smart.) The letters TS stand for Terminal Services, which was the former name of the technology now known as Remote Desktop. And the word client refers to the local computer, the one that is connected to the remote computer. In Terminal Services terminology, the machine you are connect from is the client, and the machine you are connecting to is the server.
There’s another level of confusion in the name of the feature. People often call these
\\tsclient\X thingies Redirected Drives, which collides with the existing name for local drive letters that have been mapped to a network resource. In the user interface, these are usually called Mapped Network Drives. From the command line, you create these things via the
NET USE command.
Okay, enough with the confusing terminology. For today, we’re talking about Remote Desktop Device Redirection, where the redirected device is a drive letter.
If you open My Computer and look under Other, you’ll see those drives which were injected from the local computer. Your first tip-off that there’s something funny about these drives: They don’t show up in the Network Location section like other mapped drives; instead they show up under the rather generic-sounding Other.
That’s because these drives aren’t really drives. They are folder shortcuts, a special type of shortcut that grafts one part of the shell namespace into another. The ones created by Remote Desktop Device Redirection are shell instance objects, which is a way of creating certain types of shell extensions using just a handful of registry keys.
Since they aren’t really drives, some things that work for real drives don’t work for these fake drives. And one of those things is that Explorer thinks that they don’t support the New Folder command because when Explorer asks, “Do you support IStorage?” (because that’s the interface that Explorer uses to create new folders), the answer is “No, you silly rabbit. I’m an Other!”
Now, it turns out that the Terminal Services folks could’ve customized their Other to say, “Actually, yeah, I do support IStorage.” You do this by setting the bit
0x00000008 in the
Attributes value of the
ShellFolder key when you registered your instance object. The Terminal Services folks forgot to set that bit, and the result is no New Folder button.
Sorry about that.
As a workaround, you can create your new folder by typing
\\tsclient\X into the address bar. That folder is the thing that the folder shortcut is pointing to (so it’s just another name for the same thing), but since it’s the real thing, it correctly reports the
SFGAO_STORAGE flag, and the New Folder button appears.