This is an old revision of the document!

Documentation » Setting up WinSCP »

Drag&drop Shell Extension

WinSCP drag&drop shell extension is extension of the operation system (or rather Windows Explorer). It allows you to drag files from WinSCP directly to any folder (Explorer window). Without it WinSCP needs to download the files first to temporary directory and only after that Explorer transfers the files to their destination. While this happens transparently, it has several drawbacks.

Advertisement

Installation and Set up

The extension is installed by WinSCP installer by default (the standalone WinSCP application does not include the extension and it cannot be downloaded separatelly).

If you install the extension you will need to restart your computer to make it operational.

To check that the extension is loaded, run WinSCP and display Drag&Drop tab of Preferences windows. If the “Use shell extension” checkbox is enabled (not grayed), the extension is loaded.

To tell WinSCP to use the extension, select “Use shell extension” checkbox. Note the unselecting it (or rather selecting “Use temporary folder” checkbox) does not uninstall the extension. It will be still loaded into memory and will be loaded every time the operation system starts up.

Security Considerations

Note that the extension is registered in the operating system (or rather Windows Explorer) and thus it is loaded into memory even if you do not use WinSCP.

Technical Background

This chapter is for those who curious why WinSCP needs shell extension to allow direct downloads using drag&drop.

Here is short explanation: Windows drag&drop mechanics does not allow source application of drag&drop operation to find out easily, where the files are dropped. It is up to target application (Windows Explorer usually) to transfer files to destination. It is rather reasonable, because source application can hardly transfer files to all possible destinations. Keep in mind that you can drop files not only to a directory, but even to ZIP file (or any other archive), remote directory (via FTP, SCP, SFTP…), trash, …

Advertisement

Obviously even Windows Explorer (or any other target application, like WinZip) cannot download files from any possible source (particulary it does not know SCP/SFTP).

When the extension is not installed, WinSCP uses trick to allow drag&drop downloads. It tells Explorer that the files are in temporary folder (from where Explorer knows how to get the files) and a moment before the Explorer starts to copy files from there, WinSCP downloads the files there.

To allow direct drag&drop downloads, the shell extension was developed. It misuses Windows Explorer CopyHook’s. CopyHook is COM object (DLL library) that is called by Windows Explorer whenever directory (not file) is transfered within file system. When you drag anything from WinSCP, it creates empty dummy folder in temporary directory and pretends that you as user drag that directory. Once your drop it to Windows Explorer, it calls the CopyHook’s (including the WinSCP shell extension), telling it what and where was dragged. This way WinSCP knows the actual destination. It cancels the drag&drop operation, so the dummy directory is not copied by Explorer and transfers your actual selection to now-known destination.

This on the other hand explains why with the extension you cannot drag files to any other application except for the Windows Explorer. No other application would call the CopyHook.

Last modified: by martin