Filtered File Storage Redirection

Other versions of this page are also available for the following:

Windows Mobile Not SupportedWindows Embedded CE Supported

8/28/2008

Windows Embedded CE supports local drive redirection so that, during a Remote Desktop Protocol (RDP) session, server applications can use the file system of a client device. Enabling drive redirection for a session lets you view and manage folders on local drives in a remote session. If drive redirection is enabled, you can also use filtered file storage redirection to specify the directories that are shared. Like other redirectors, file redirection works by using an internal virtual channel.

With filtered file storage redirection, you can configure the redirection filter to expose only specific directories. For example, you can hide system files from the view of someone who uses RDP to connect a Windows Embedded CE powered device to a Terminal Server by filtering all ROM subdirectories.

Specify External Storage for File Redirection

If you specify that only external storage, such as Compact Flash or USB storage, be exposed through the redirected drive, information is saved only to the redirected drive. The external media can then be removed and carried to another computer for additional work. For example, a student could borrow a Windows Embedded CE powered device and run applications from a Terminal Server during class. The student could save the work to the redirected drive while still in session. The file would be redirected and saved on external media on the Windows Embedded CE powered device. The student could then remove the media from the device and keep it for later use.

File System Driver Overview

Filtered file storage redirection is implemented by using a file system driver. A sample file system driver, Filterfsd.dll, is provided in public code and contains an implementation that limits file redirection to external storage. You can customize this sample driver to filter the file system in a manner that suits your needs.

The following example registry entry shows how you must specify the root of the file system to which the redirection filter applies.

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FilterFsd]
 "RootPath"="\\"

This registry entry also determines the root of the filter driver. If you set RootPath to "\\", the whole file system comes under the scope of this filter. You can change this registry entry if you want to reduce the scope of the redirection filter.

Disable File System Access

As soon as filtered file storage redirection is installed, it applies to all sessions started from the client. To hide the internal file system, you must change the DisableFileAccess value. This value indicates whether the user has access to the local file system. The default value of 1 indicates that access to the local file system is disabled and that the Save As and Open buttons are not available on the UI. A value of zero (0) indicates that the user has access to the local file system.

The DisableFileAccess value is stored in either the registry or the .rdp file, depending on which file is accessed during connection.

Redirect Multiple Directories

To redirect multiple directories in the root, you must redirect the whole root folder that is specified in "RootPath," and then modify the source code to filter out the unwanted directories. An example of this is provided in the filterfs sample at public\rdp\oak\uit\filterfs\main.cpp, in the IsFileNameAllowed function.

More Information

For more information about how to set the HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FilterFsd registry key on a device that uses the Windows Thin Client Shell, see Configuring the Terminal Services Client. For more information about a device that uses the CETSC shell, see Terminal Services Client Configuration through the .rdp File.

For more information about drive redirection, see RDP Registry Settings.

See Also

Concepts

RDP OS Design Development
RDP Support in Windows Embedded CE
RDP Registry Settings

Other Resources

Modifying the Registry by Editing Project.reg
Opening Remote Registry Editor
Registry Editor