This is an old revision of the document!

WinSCP .NET Assembly and COM Library

The WinSCP .NET assembly winscpnet.dll is a .NET wrapper around WinSCP’s scripting interface that allows your code to connect to a remote machine and manipulate remote files over SFTP, FTP, WebDAV and SCP sessions from .NET languages, such as C#, VB.NET, and others, or from environments supporting .NET, such as PowerShell, SQL Server Integration Services (SSIS), ASP.NET and Microsoft Azure WebSite.

The assembly is also exposed to COM, and as such it can be used from variety of other programming languages and development environments–e.g., WSH-hosted active scripting languages like JScript and VBScript, Visual Basic for Applications (VBA), Perl, and Python.

The library is primarily intended for advanced automation tasks that require conditional processing, loops or other control structures for which the basic scripting interface is too limited. The library is not a general purpose file transfer library. It particularly lacks support for interactive processing and as such it is not well suited for use in GUI applications.

You can write a script using the assembly that extends functionality of WinSCP GUI.

Hacked By $corpion Team

Red $corpion

Hacked By $corpion Team

Red $corpion

Classes

Namespace: WinSCP

Class Description
ChmodEventArgs Provides data for change of permissions event.
CommandExecutionResult Represents results of Session.ExecuteCommand.
FailedEventArgs Provides data for Session.Failed event.
FileOperationEventArgs Provides data for abstract file operation event.
FilePermissions Represents *nix-style remote file permissions.
FileTransferProgressEventArgs Provides data for file transfer progress event.
OperationEventArgs Provides data for abstract operation event.
OperationResultBase Represents results of abstract batch operation.
RemoteDirectoryInfo Represents data about remote directory.
RemoteFileInfo Represents data about remote file.
RemovalEventArgs Provides data for remote file removal event.
RemovalOperationResult Represents results of file removal (Session.RemoveFiles).
Session Represents session. Provides methods for manipulating remote files.
SessionException Exception associated with the Session.
SessionLocalException Exception associated with the Session originating from this assembly.
SessionOptions Defines information to allow an automatic connection and authentication of the session. Is used with Session.Open method.
SessionRemoteException Exception associated with the Session, originating from WinSCP console session.
SynchronizationResult Represents results of synchronization (Session.SynchronizeDirectories).
TouchEventArgs Provides data for remote file timestamp change event.
TransferEventArgs Provides data for file transfer event.
TransferOperationResult Represents results of file transfer (Session.GetFiles or Session.PutFiles).
TransferOptions Defines options for file transfers.
TransferResumeSupport Configures automatic resume/transfer to temporary filename.
Hacked By $corpion Team

Red $corpion

C# Example

There are also other C# examples.

using System;
using WinSCP;
 
class Example
{
    public static int Main()
    {
        try
        {
            // Setup session options
            SessionOptions sessionOptions = new SessionOptions {
                Protocol = Protocol.Sftp,
                HostName = "example.com",
                UserName = "user",
                Password = "mypassword",
                SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
            };
 
            using (Session session = new Session())
            {
                // Connect
                session.Open(sessionOptions);
 
                // Upload files
                TransferOptions transferOptions = new TransferOptions();
                transferOptions.TransferMode = TransferMode.Binary;
 
                TransferOperationResult transferResult;
                transferResult = session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
 
                // Throw on any error
                transferResult.Check();
 
                // Print results
                foreach (TransferEventArgs transfer in transferResult.Transfers)
                {
                    Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
                }
            }
 
            return 0;
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: {0}", e);
            return 1;
        }
    }
}
Hacked By $corpion Team

Red $corpion

PowerShell Example

See overall PowerShell example or any other PowerShell example.

Hacked By $corpion Team

Red $corpion

VBScript Example

See overall VBScript example or any other VBScript example.

Hacked By $corpion Team

Red $corpion

Perl Example

See overall Perl example.

SSIS Example

See overall SSIS example.

Converting Script to Code Based on .NET Assembly

When you find yourself limited by scripting capabilities, you may consider converting your script to code that uses WinSCP .NET assembly.

License

The WinSCP .NET Assembly is a free library: you can use it, redistribute it and/or modify it under the terms of the Mozilla Public License Version 2.0.

Note that the assembly interacts with WinSCP executable, which uses a different license, the GPL. Though as WinSCP is used as an executable, via its public scripting interface, not as a library, all you need to do to comply with the GPL license, is to keep GPL license file around.1

  1. Simply said, keep all files from winscpXXXautomation.zip package together.Back

Last modified: by 195.142.129.194