CINXE.COM

WinSCP .NET Assembly and COM Library :: WinSCP

<!DOCTYPE html> <html lang="en"> <head> <title>WinSCP .NET Assembly and COM Library :: WinSCP</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://winscp-static-746341.c.cdn77.org/assets/css/bootstrap-modified.css?v=101" /> <link rel="stylesheet" href="https://winscp-static-746341.c.cdn77.org/assets/js/slick/slick.css?v=101" /> <link rel="stylesheet" href="https://winscp-static-746341.c.cdn77.org/assets/css/styles-all.css?v=101" /> <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" /> <meta name="robots" content="index,follow" /> <meta name="DCTERMS.modified" content="2024-07-06T17:30:00+0000" /> <meta name="generator" content="DokuWiki" /> <link rel="start" href="/eng/docs/" /> <link rel="canonical" href="https://winscp.net/eng/docs/library" /> <meta name="keywords" content="file manager,sftp client,scp client,ftp client,windows,secure file transfer,ftp,freeware" /> <meta name="description" content="WinSCP is a free file manager for Windows supporting FTP, SFTP, S3 and WebDAV." /> <meta name="google-site-verification" content="R-0cOllfdlHe93mQzthYHV_GUkAImaodzbyD5--pXOQ" /> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="alternate" type="application/rss+xml" title="Project News" href="/feed.php" /> <script> if (top.frames.length!=0) { if (window.location.href.replace) top.location.replace(self.location.href); else top.location.href=self.document.href; } </script> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-22775137-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-22775137-1'); </script> <script> window.fbAsyncInit = function() { FB.init({ appId : '215157521840905', status : true, autoLogAppEvents : true, xfbml : true, version : 'v2.10' }); FB.AppEvents.logPageView(); }; (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <script async defer src="https://platform.twitter.com/widgets.js"></script> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" width="95" height="15" class="hidden"> <symbol id="star" viewBox="0 0 85 15" preserveAspectRatio="xMinYMax meet"> <path d="M4.108 14.63c-.17-.004-.327-.087-.428-.224-.1-.137-.135-.314-.092-.48L4.806 9.23 1.103 6.156C.925 6.01.855 5.77.926 5.547c.07-.22.267-.373.496-.386L6.2 4.888 7.93.36C8.015.143 8.22 0 8.45 0c.228 0 .434.143.516.36L10.7 4.887l4.776.274c.23.014.426.168.496.388s0 .463-.176.61l-3.703 3.07 1.217 4.698c.06.225-.023.463-.21.6-.184.137-.434.144-.626.017l-4.025-2.63-4.026 2.63c-.094.062-.204.092-.316.088z" fill-rule="evenodd"/> </symbol> </svg> <div id="pageDocumentation"> <div class="masthead"> <div class="container"> <nav class="navbar"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span>Menu</span> </button> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#search" aria-expanded="false" aria-controls="search"> <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><title>Toggle search</title><path d="M12.864 11.32h-.813l-.287-.277c1.01-1.173 1.616-2.697 1.616-4.353C13.38 2.995 10.383 0 6.69 0 2.995 0 0 2.995 0 6.69c0 3.694 2.995 6.69 6.69 6.69 1.656 0 3.18-.608 4.353-1.617l.278.288v.814L16.468 18 18 16.467l-5.136-5.146zm-6.174 0c-2.563 0-4.632-2.068-4.632-4.63 0-2.563 2.07-4.632 4.632-4.632s4.63 2.07 4.63 4.632-2.068 4.63-4.63 4.63z" fill="#FFF" fill-rule="evenodd" opacity="1"/> <image src="/assets/images/search.png" xlink:href="" /><!-- fallback with IE fix --> </svg> </button> <a class="navbar-brand" href="https://winscp.net/"> <img srcset="https://winscp-static-746341.c.cdn77.org/assets/images/logos/logo.png?v=101, https://winscp-static-746341.c.cdn77.org/assets/images/logos/logo@2x.png?v=101 2x, https://winscp-static-746341.c.cdn77.org/assets/images/logos/logo@3x.png?v=101 3x" src="https://winscp-static-746341.c.cdn77.org/assets/images/logos/logo.png?v=101" width="55" height="54" alt=""> <span class="navbar-brand-text"> <span class="navbar-brand-main"><span>WinSCP</span></span> <span class="navbar-brand-strapline"> <span> Free </span> <span>SFTP, SCP, S3 and FTP client</span> for <span>Windows</span> </span> </span> </a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav nav-justified"> <li id="navbarHome"><a href="/eng/index.php">Home</a></li> <li id="navbarNews"><a href="/eng/news.php">News</a></li> <li id="navbarIntroduction"><a href="/eng/docs/introduction">Introduction</a></li> <li id="navbarDownload"><a href="/eng/download.php">Download</a></li> <li id="navbarInstall"><a href="/eng/docs/guide_install">Install</a></li> <li id="navbarDocumentation"><a href="/eng/docs/">Documentation</a></li> <li id="navbarForum"><a href="/forum/">Forum</a></li> </ul> <button type="button" class="navbar-toggle hidden-sm-block" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">Close</button> </div> <div id="search" class="navbar-collapse collapse"> <form action="/search.php" class="navbar-form navbar-right"> <div class="input-group"> <input name="q" type="text" class="form-control" placeholder="Search..." value=""> <span class="input-group-btn"> <button name="sa" class="btn btn-default" type="submit"> <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><title>Search</title><path d="M12.864 11.32h-.813l-.287-.277c1.01-1.173 1.616-2.697 1.616-4.353C13.38 2.995 10.383 0 6.69 0 2.995 0 0 2.995 0 6.69c0 3.694 2.995 6.69 6.69 6.69 1.656 0 3.18-.608 4.353-1.617l.278.288v.814L16.468 18 18 16.467l-5.136-5.146zm-6.174 0c-2.563 0-4.632-2.068-4.632-4.63 0-2.563 2.07-4.632 4.632-4.632s4.63 2.07 4.63 4.632-2.068 4.63-4.63 4.63z" fill="#FFF" fill-rule="evenodd" opacity=".5"/> <image src="/assets/images/search.png" xlink:href="" /><!-- fallback with IE fix --> </svg> </button> </span> </div> <input type="hidden" name="refinement" value="Documentation" /> </form> <button type="button" class="navbar-toggle hidden-sm-block" data-toggle="collapse" data-target="#search" aria-expanded="false" aria-controls="search">Close</button> </div> </div> </nav> </div> </div> <main class="container main-content-container cols-2"> <div class="row"> <section class="col-md-9"> <!-- wikipage start --> <div class="context"><a href="/eng/docs/start" class="context" title="Documentation">Documentation</a> &raquo; </div> <header class="content-editable header-and-meta"> <h1>WinSCP .NET Assembly and COM Library</h1> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="" /><input type="submit" value="Edit this page" class="button" title="Edit this page (Alt+Shift+E)" accesskey="e" /></form></div> </header> <p> The WinSCP .NET assembly <code>winscpnet.dll</code> is a .NET wrapper around WinSCP&#8217;s <a href="/eng/docs/scripting">scripting interface</a> that allows your code to connect to a remote machine and manipulate remote files over <abbr title="SSH File Transfer Protocol">SFTP</abbr>, <abbr title="File Transfer Protocol">FTP</abbr>, <abbr title="Web Distributed Authoring and Versioning">WebDAV</abbr>, <abbr title="Amazon S3 (Simple Storage Service)">S3</abbr> and <abbr title="Secure Copy Protocol">SCP</abbr> sessions from .NET languages, such as <a href="#csharp">C#</a>, <a href="#vbnet">VB.NET</a>, and others, or from automation environments supporting .NET, such as <a href="/eng/docs/library_powershell">PowerShell</a>, <a href="/eng/docs/library_ssis">SQL Server Integration Services (SSIS)</a> and Microsoft Azure WebSites and Functions. </p> <p> The assembly is also exposed to <abbr title="Component Object Model">COM</abbr>, and as such it can be used from variety of other programming languages and development environments&#8211;e.g., <a href="/eng/docs/library_com_wsh">WSH-hosted active scripting languages</a> like JScript and VBScript, <a href="/eng/docs/library_vb">Visual Basic for Applications (VBA)</a>, <a href="/eng/docs/library_perl">Perl</a>, and Python. </p> <div class="promo-block"> <p class="promo-block-content"> <em>Advertisement</em> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block;min-height: 90px" data-ad-client="ca-pub-1682759925159355" data-ad-slot="5314776528" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </p> </div> <p> The assembly targets .NET Framework 4.0 and .NET Standard 2.0. </p> <ul class="list-unstyled toc"> <li><a href="#purpose">Purpose of the Assembly</a></li> <li><a href="#downloading_and_installing_the_assembly">Downloading and Installing the Assembly</a></li> <li><a href="#using">Using Classes from WinSCP .NET Assembly</a></li> <li><a href="#classes">Classes</a></li> <li><a href="#generating_code">Generating Code</a></li> <li><a href="#example">Examples</a> <ul class="list-unstyled toc2"> <li><a href="#csharp">C# Example</a></li> <li><a href="#vbnet">VB.NET Example</a></li> <li><a href="#powershell">PowerShell Example</a></li> <li><a href="#jscript">JScript Example</a></li> <li><a href="#vbscript">VBScript Example</a></li> <li><a href="#vba">VBA Example</a></li> <li><a href="#perl">Perl Example</a></li> <li><a href="#ssis">SSIS Example</a></li> </ul> </li> <li><a href="#net">Converting Script to Code Based on .NET Assembly</a></li> <li><a href="#license">License</a></li> </ul> <section id="purpose_of_the_assembly" class="upper-divider"> <header class="content-editable header-and-meta"> <h2 id="purpose">Purpose of the Assembly</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="7-16" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> The library is primarily intended for advanced automation tasks on Microsoft Windows that require conditional processing, loops or other control structures for which the basic <a href="/eng/docs/scripting">scripting interface</a> is too limited. </p> <div class="promo-block"> <p class="promo-block-content"> <em>Advertisement</em> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block;min-height: 90px" data-ad-client="ca-pub-1682759925159355" data-ad-slot="9772896285" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </p> </div> <p> You can also use the assembly to write scripts that <a href="/eng/docs/guide_custom_commands_automation">extend functionality of WinSCP GUI</a>. </p> <p> The library is not a general purpose file transfer library. It particularly has a limited support for an interactive processing, and as such it is not well suited for use in <abbr title="Graphical User Interface">GUI</abbr> applications. </p> <p id="web"> Because the assembly uses <code>winscp.exe</code> internally, it is also difficult (but not impossible) to use the assembly within a restricted environment like a web server (e.g. with <abbr title="Active Server Pages">ASP</abbr>.NET), that limits or even restricts execution of external processes. </p> </section> <section id="downloading_and_installing_the_assembly" class="upper-divider"> <header class="content-editable header-and-meta"> <h2>Downloading and Installing the Assembly</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="17-19" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> First you need to <a href="/eng/docs/library_install">download and install the assembly</a>. </p> </section> <section id="using_classes_from_winscp_.net_assembly" class="upper-divider"> <header class="content-editable header-and-meta"> <h2 id="using">Using Classes from WinSCP .NET Assembly</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="20-29" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <ol> <li>Create an instance of the <code><a href="/eng/docs/library_sessionoptions">WinSCP.SessionOptions</a></code> class and fill in all necessary information to allow an automatic connection and authentication of your session.</li> <li>Create an instance of the <code><a href="/eng/docs/library_session">WinSCP.Session</a></code> class. Optionally you can hook handlers of some events of the class.</li> <li>Open the session using <code><a href="/eng/docs/library_session_open">Session.Open</a></code> method, passing instance of your <code>WinSCP.SessionOptions</code>.</li> </ol> <p> Once the session is opened, you can use any of the <code>WinSCP.Session</code> <a href="/eng/docs/library_session#methods">methods</a> to manipulate remote files, e.g., </p> <ul> <li><code><a href="/eng/docs/library_session_getfiles">Session.GetFiles</a></code> to <a href="/eng/docs/task_download">download files</a>,</li> <li><code><a href="/eng/docs/library_session_putfiles">Session.PutFiles</a></code> to <a href="/eng/docs/task_upload">upload files</a> or</li> <li><code><a href="/eng/docs/library_session_synchronizedirectories">Session.SynchronizeDirectories</a></code> to <a href="/eng/docs/task_synchronize_full">synchronize directories</a>.</li> </ul> </section> <section class="upper-divider"> <header class="content-editable header-and-meta"> <h2 id="classes">Classes</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="30-59" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> Namespace: <code>WinSCP</code> </p> <table class="table"> <tr> <th>Class</th> <th>Description</th> </tr> <tr> <td><a href="/eng/docs/library_chmodeventargs">ChmodEventArgs</a></td> <td>Provides data for change of permissions event.</td> </tr> <tr> <td><a href="/eng/docs/library_commandexecutionresult">CommandExecutionResult</a></td> <td>Represents results of <a href="/eng/docs/library_session_executecommand">Session.ExecuteCommand</a>.</td> </tr> <tr> <td><a href="/eng/docs/library_comparisondifference">ComparisonDifference</a></td> <td>Represents data about a single difference identified by <a href="/eng/docs/library_session_comparedirectories"><code>Session.CompareDirectories</code></a>.</td> </tr> <tr> <td><a href="/eng/docs/library_failedeventargs">FailedEventArgs</a></td> <td>Provides data for <code><a href="/eng/docs/library_session_failed">Session.Failed</a></code> event.</td> </tr> <tr> <td><a href="/eng/docs/library_fileoperationeventargs">FileOperationEventArgs</a></td> <td>Provides data for abstract file operation event.</td> </tr> <tr> <td><a href="/eng/docs/library_filepermissions">FilePermissions</a></td> <td>Represents *nix-style remote file permissions.</td> </tr> <tr> <td><a href="/eng/docs/library_filetransferprogresseventargs">FileTransferProgressEventArgs</a></td> <td>Provides data for file transfer progress event.</td> </tr> <tr> <td><a href="/eng/docs/library_operationeventargs">OperationEventArgs</a></td> <td>Provides data for abstract operation event.</td> </tr> <tr> <td><a href="/eng/docs/library_operationresultbase">OperationResultBase</a></td> <td>Represents results of abstract batch operation.</td> </tr> <tr> <td><a href="/eng/docs/library_remotedirectoryinfo">RemoteDirectoryInfo</a></td> <td>Represents data about remote directory.</td> </tr> <tr> <td><a href="/eng/docs/library_remotefileinfo">RemoteFileInfo</a></td> <td>Represents data about remote file.</td> </tr> <tr> <td><a href="/eng/docs/library_remotepath">RemotePath</a></td> <td>Performs operations on <code>string</code> instances that contain file or directory path.</td> </tr> <tr> <td><a href="/eng/docs/library_removaleventargs">RemovalEventArgs</a></td> <td>Provides data for remote file removal event.</td> </tr> <tr> <td><a href="/eng/docs/library_removaloperationresult">RemovalOperationResult</a></td> <td>Represents results of file removal (<code><a href="/eng/docs/library_session_removefiles">Session.RemoveFiles</a></code>).</td> </tr> <tr> <td><a href="/eng/docs/library_session">Session</a></td> <td>Represents session. Provides methods for manipulating remote files.</td> </tr> <tr> <td><a href="/eng/docs/library_sessionexception">SessionException</a></td> <td>Exception associated with the <code><a href="/eng/docs/library_session">Session</a></code>.</td> </tr> <tr> <td><a href="/eng/docs/library_sessionlocalexception">SessionLocalException</a></td> <td>Exception associated with the <code><a href="/eng/docs/library_session">Session</a></code> originating from this assembly.</td> </tr> <tr> <td><a href="/eng/docs/library_sessionoptions">SessionOptions</a></td> <td>Defines information to allow an automatic connection and authentication of the session. Is used with <code><a href="/eng/docs/library_session_open">Session.Open</a></code> method.</td> </tr> <tr> <td><a href="/eng/docs/library_sessionremoteexception">SessionRemoteException</a></td> <td>Exception associated with the <code><a href="/eng/docs/library_session">Session</a></code>, originating from WinSCP console session.</td> </tr> <tr> <td><a href="/eng/docs/library_synchronizationresult">SynchronizationResult</a></td> <td>Represents results of synchronization (<code class="code-wrap"><a href="/eng/docs/library_session_synchronizedirectories">Session.SynchronizeDirectories</a></code>).</td> </tr> <tr> <td><a href="/eng/docs/library_toucheventargs">TouchEventArgs</a></td> <td>Provides data for remote file timestamp change event.</td> </tr> <tr> <td><a href="/eng/docs/library_transfereventargs">TransferEventArgs</a></td> <td>Provides data for file transfer event.</td> </tr> <tr> <td><a href="/eng/docs/library_transferoperationresult">TransferOperationResult</a></td> <td>Represents results of file transfer (<code><a href="/eng/docs/library_session_getfiles">Session.GetFiles</a></code> or <code><a href="/eng/docs/library_session_putfiles">Session.PutFiles</a></code>).</td> </tr> <tr> <td><a href="/eng/docs/library_transferoptions">TransferOptions</a></td> <td>Defines options for file transfers.</td> </tr> <tr> <td><a href="/eng/docs/library_transferresumesupport">TransferResumeSupport</a></td> <td>Configures automatic resume/transfer to temporary filename.</td> </tr> </table> <div class="promo-block"> <p class="promo-block-content"> <em>Advertisement</em> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block;min-height: 90px" data-ad-client="ca-pub-1682759925159355" data-ad-slot="9772896285" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </p> </div> </section> <section id="generating_code" class="upper-divider"> <header class="content-editable header-and-meta"> <h2>Generating Code</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="60-63" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> You can have WinSCP <a href="/eng/docs/ui_generateurl">generate a code template for you</a>. </p> </section> <section id="examples" class="upper-divider"> <header class="content-editable header-and-meta"> <h2 id="example">Examples</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="64-67" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> See <a href="/eng/docs/library_examples">list of all examples</a>. </p> </section> <section id="c_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="csharp">C# Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="68-124" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> There are also <a href="/eng/docs/library_examples">other C# examples</a>. </p> <pre class="csharp code"><span class="kw5">using</span> System; <span class="kw5">using</span> WinSCP; &nbsp; <span class="kw5">class</span> <span class="kw10">Example</span> <span class="br0">&#123;</span> <span class="kw5">public</span> <span class="kw5">static</span> <span class="kw5">int</span> Main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw5">try</span> <span class="br0">&#123;</span> <span class="co1">// Setup session options</span> <a href="https://winscp.net/eng/docs/library_sessionoptions"><span class="kw10">SessionOptions</span></a> sessionOptions = <span class="kw5">new</span> <a href="https://winscp.net/eng/docs/library_sessionoptions"><span class="kw10">SessionOptions</span></a> <span class="br0">&#123;</span> Protocol = <span class="kw10">Protocol</span>.<span class="me1">Sftp</span>, HostName = <span class="st0">"example.com"</span>, UserName = <span class="st0">"user"</span>, Password = <span class="st0">"mypassword"</span>, SshHostKeyFingerprint = <span class="st0">"ssh-rsa 2048 xxxxxxxxxxx..."</span> <span class="br0">&#125;</span>; &nbsp; <span class="kw5">using</span> <span class="br0">&#40;</span><a href="https://winscp.net/eng/docs/library_session"><span class="kw10">Session</span></a> session = <span class="kw5">new</span> <a href="https://winscp.net/eng/docs/library_session"><span class="kw10">Session</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// Connect</span> session.<span class="me1">Open</span><span class="br0">&#40;</span>sessionOptions<span class="br0">&#41;</span>; &nbsp; <span class="co1">// Upload files</span> <a href="https://winscp.net/eng/docs/library_transferoptions"><span class="kw10">TransferOptions</span></a> transferOptions = <span class="kw5">new</span> <a href="https://winscp.net/eng/docs/library_transferoptions"><span class="kw10">TransferOptions</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>; transferOptions.<span class="me1">TransferMode</span> = <span class="kw10">TransferMode</span>.<span class="me1">Binary</span>; &nbsp; <a href="https://winscp.net/eng/docs/library_transferoperationresult"><span class="kw10">TransferOperationResult</span></a> transferResult; transferResult = session.<span class="me1">PutFiles</span><span class="br0">&#40;</span>@<span class="st0">"d:\toupload\*"</span>, <span class="st0">"/home/user/"</span>, <span class="kw5">false</span>, transferOptions<span class="br0">&#41;</span>; &nbsp; <span class="co1">// Throw on any error</span> transferResult.<span class="me1">Check</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; &nbsp; <span class="co1">// Print results</span> <span class="kw5">foreach</span> <span class="br0">&#40;</span><a href="https://winscp.net/eng/docs/library_transfereventargs"><span class="kw10">TransferEventArgs</span></a> transfer <span class="kw5">in</span> transferResult.<span class="me1">Transfers</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <a href="https://learn.microsoft.com/en-us/dotnet/api/system.console"><span class="kw10">Console</span></a>.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">"Upload of {0} succeeded"</span>, transfer.<span class="me1">FileName</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span> <span class="br0">&#125;</span> &nbsp; <span class="kw5">return</span> <span class="nu0">0</span>; <span class="br0">&#125;</span> <span class="kw5">catch</span> <span class="br0">&#40;</span><a href="https://learn.microsoft.com/en-us/dotnet/api/system.exception"><span class="kw10">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span> <a href="https://learn.microsoft.com/en-us/dotnet/api/system.console"><span class="kw10">Console</span></a>.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">"Error: {0}"</span>, e<span class="br0">&#41;</span>; <span class="kw5">return</span> <span class="nu0">1</span>; <span class="br0">&#125;</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span></pre> <div class="promo-block"> <p class="promo-block-content"> <em>Advertisement</em> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block;min-height: 90px" data-ad-client="ca-pub-1682759925159355" data-ad-slot="9772896285" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </p> </div> </section> <section id="vb.net_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="vbnet">VB.NET Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="125-177" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> There are also <a href="/eng/docs/library_examples">other VB.NET examples</a>. </p> <pre class="vbnet code"><span class="kw5">Imports</span> WinSCP &nbsp; <span class="kw5">Friend</span> <span class="kw5">Class</span> <span class="kw10">Example</span> &nbsp; <span class="kw5">Public</span> <span class="kw5">Shared</span> <span class="kw5">Function</span> Main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw5">As</span> <span class="kw5">Integer</span> &nbsp; <span class="kw5">Try</span> <span class="co1">' Setup session options</span> <span class="kw5">Dim</span> sessionOptions <span class="kw5">As</span> <span class="kw5">New</span> <a href="https://winscp.net/eng/docs/library_sessionoptions"><span class="kw10">SessionOptions</span></a> <span class="kw5">With</span> sessionOptions .<span class="me1">Protocol</span> = <span class="kw10">Protocol</span>.<span class="me1">Sftp</span> .<span class="me1">HostName</span> = <span class="st0">"example.com"</span> .<span class="me1">UserName</span> = <span class="st0">"user"</span> .<span class="me1">Password</span> = <span class="st0">"mypassword"</span> .<span class="me1">SshHostKeyFingerprint</span> = <span class="st0">"ssh-rsa 2048 xxxxxxxxxxx..."</span> <span class="kw5">End</span> <span class="kw5">With</span> &nbsp; <span class="kw5">Using</span> session <span class="kw5">As</span> <span class="kw5">New</span> <a href="https://winscp.net/eng/docs/library_session"><span class="kw10">Session</span></a> <span class="co1">' Connect</span> session.<span class="me1">Open</span><span class="br0">&#40;</span>sessionOptions<span class="br0">&#41;</span> &nbsp; <span class="co1">' Upload files</span> <span class="kw5">Dim</span> transferOptions <span class="kw5">As</span> <span class="kw5">New</span> <a href="https://winscp.net/eng/docs/library_transferoptions"><span class="kw10">TransferOptions</span></a> transferOptions.<span class="me1">TransferMode</span> = <span class="kw10">TransferMode</span>.<span class="me1">Binary</span> &nbsp; <span class="kw5">Dim</span> transferResult <span class="kw5">As</span> <a href="https://winscp.net/eng/docs/library_transferoperationresult"><span class="kw10">TransferOperationResult</span></a> transferResult = session.<span class="me1">PutFiles</span><span class="br0">&#40;</span><span class="st0">"d:\toupload\*"</span>, <span class="st0">"/home/user/"</span>, <span class="kw5">False</span>, transferOptions<span class="br0">&#41;</span> &nbsp; <span class="co1">' Throw on any error</span> transferResult.<span class="me1">Check</span><span class="br0">&#40;</span><span class="br0">&#41;</span> &nbsp; <span class="co1">' Print results</span> <span class="kw5">For</span> <span class="kw5">Each</span> transfer <span class="kw5">In</span> transferResult.<span class="me1">Transfers</span> <a href="https://learn.microsoft.com/en-us/dotnet/api/system.console"><span class="kw10">Console</span></a>.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">"Upload of {0} succeeded"</span>, transfer.<span class="me1">FileName</span><span class="br0">&#41;</span> <span class="kw5">Next</span> <span class="kw5">End</span> <span class="kw5">Using</span> &nbsp; <span class="kw5">Return</span> <span class="nu0">0</span> <span class="kw5">Catch</span> e <span class="kw5">As</span> <a href="https://learn.microsoft.com/en-us/dotnet/api/system.exception"><span class="kw10">Exception</span></a> <a href="https://learn.microsoft.com/en-us/dotnet/api/system.console"><span class="kw10">Console</span></a>.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">"Error: {0}"</span>, e<span class="br0">&#41;</span> <span class="kw5">Return</span> <span class="nu0">1</span> <span class="kw5">End</span> <span class="kw5">Try</span> &nbsp; <span class="kw5">End</span> <span class="kw5">Function</span> &nbsp; <span class="kw5">End</span> <span class="kw5">Class</span></pre> <div class="promo-block"> <p class="promo-block-content"> <em>Advertisement</em> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block;min-height: 90px" data-ad-client="ca-pub-1682759925159355" data-ad-slot="9772896285" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </p> </div> </section> <section id="powershell_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="powershell">PowerShell Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="178-180" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> See <a href="/eng/docs/library_powershell#example">overall PowerShell example</a> or <a href="/eng/docs/library_examples">any other PowerShell example</a>. </p> </section> <section id="jscript_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="jscript">JScript Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="181-183" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> See <a href="/eng/docs/library_com_wsh#jscript">overall JScript example</a> or <a href="/eng/docs/library_examples">any other JScript example</a>. </p> </section> <section id="vbscript_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="vbscript">VBScript Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="184-186" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> See <a href="/eng/docs/library_com_wsh#vbscript">overall VBScript example</a> or <a href="/eng/docs/library_examples">any other VBScript example</a>. </p> </section> <section id="vba_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="vba">VBA Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="187-189" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> See <a href="/eng/docs/library_vb#example">overall VBA example</a>. </p> </section> <section id="perl_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="perl">Perl Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="190-192" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> See <a href="/eng/docs/library_perl#example">overall Perl example</a>. </p> </section> <section id="ssis_example" class="upper-divider"> <header class="content-editable header-and-meta"> <h3 id="ssis">SSIS Example</h3> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="193-195" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> See <a href="/eng/docs/library_ssis#example">overall SSIS example</a>. </p> </section> <section id="converting_script_to_code_based_on_.net_assembly" class="upper-divider"> <header class="content-editable header-and-meta"> <h2 id="net">Converting Script to Code Based on .NET Assembly</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="196-198" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> When you find yourself limited by <a href="/eng/docs/scripting">scripting</a> capabilities, you may consider <a href="/eng/docs/library_from_script">converting your script to code that uses WinSCP .NET assembly</a>. </p> </section> <section class="upper-divider"> <header class="content-editable header-and-meta"> <h2 id="license">License</h2> <div class="secedit"><form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="199-" /><input type="submit" value="Edit" class="button" title="Edit" /></form></div> </header> <p> The WinSCP .NET Assembly is a free library: you can use it, redistribute it and/or modify it under the terms of the <a href="https://www.mozilla.org/MPL/2.0/" class="ws-icon-extlink" title="https://www.mozilla.org/MPL/2.0/">Mozilla Public License Version 2.0</a>. </p> <p> Because WinSCP uses <a href="/eng/docs/license">the GPL license</a> it&#8217;s important to keep the GPL license file around.<a href="#fn1" id="fnt1" class="fn_top">1</a> Your software doesn&#8217;t have to be licensed under <abbr title="GNU General Public License">GPL</abbr> as the WinSCP .NET Assembly is using WinSCP as an executable, via its public <a href="/eng/docs/scripting">scripting interface</a>, and not as a library. </p> </section> <div class="footnotes"> <ol> <li id="fn1">Simply said, keep all files from <code>WinSCP-X.X.X-Automation.zip</code> package together.<a href="#fnt1" class="fn_bot">Back</a></li> </ol> </div> <!-- cachefile ./../data/data/.cache/2a826cd58c236ea8369d8bad400e5694 used --> <!-- wikipage stop --> </section> <aside class="col-md-3 sidebar"> <section class="donations"> <div class="row"> <h2 class="pull-left">Contribute</h2> <p class="pull-right"> <img src="https://winscp-static-746341.c.cdn77.org/assets/images/paypal.svg?v=101" alt="PayPal" style="height: 1.5em; vertical-align: -0.4em; padding-left: 0.1em;"/> </p> </div> <p> <a href="/eng/donate.php" class="btn btn-primary btn-lg">Donate</a> </p> <ul class="list-inline"> <li><a href="/eng/donate.php?amount=19&amp;currency=USD&amp;class=S" title="Donate $19 via PayPal" rel="nofollow">$19</a></li> <li><a href="/eng/donate.php?amount=29&amp;currency=USD&amp;class=S" title="Donate $29 via PayPal" rel="nofollow">$29</a></li> <li><a href="/eng/donate.php?amount=49&amp;currency=USD&amp;class=S" title="Donate $49 via PayPal" rel="nofollow">$49</a></li> <li><a href="/eng/donate.php?amount=99&amp;currency=USD&amp;class=S" title="Donate $99 via PayPal" rel="nofollow">$99</a></li> <li><a href="/eng/donate.php?amount=249&amp;currency=USD&amp;class=S" title="Donate $249 via PayPal" rel="nofollow">$249</a></li> </ul> <p> <img src="https://winscp-static-746341.c.cdn77.org/assets/images/card-logo-visa.svg?v=101" alt="Visa" style="height: 1.2em; vertical-align: -0.2em; padding-left: 0.1em;"/> <img src="https://winscp-static-746341.c.cdn77.org/assets/images/card-logo-mastercard.svg?v=101" alt="Mastercard" style="height: 1.2em; vertical-align: -0.2em; padding-left: 0.1em;"/> <img src="https://winscp-static-746341.c.cdn77.org/assets/images/card-logo-amex.svg?v=101" alt="American Express" style="height: 1.2em; vertical-align: -0.2em; padding-left: 0.1em;"/> <img src="https://winscp-static-746341.c.cdn77.org/assets/images/card-logo-unknown.svg?v=101" alt="Other" style="height: 1.2em; vertical-align: -0.2em; padding-left: 0.1em;"/> </p> </section> <section class="user-approved-software"> <h2>User Approved Software</h2> <div class="rating-stars"> <span class="rating-stars-score"> <svg width="95" height="15" class="rating-stars rating-stars-5"> <use xlink:href="#star" fill="#fff" transform="translate(0 0)"/> <use xlink:href="#star" fill="#fff" transform="translate(19 0)"/> <use xlink:href="#star" fill="#fff" transform="translate(38 0)"/> <use xlink:href="#star" fill="#fff" transform="translate(57 0)"/> <use xlink:href="#star" fill="#fff" transform="translate(76 0)"/> </svg> </span> </div> <h3 class="text-left">Total Downloads:</h3> <p class="special-large"> 235,046,004 </p> <h3 class="text-left">Rating:</h3> <p> <span class="special-large">4.8</span> out of <span class="special-large">205</span> reviews </p> <p> <a href="https://sourceforge.net/projects/winscp/reviews/" class="ws-icon-arrow soft-link">SourceForge Review</a> </p> </section> <section class="social-widgets"> <h2>Recommend</h2> <ul class="list-inline"> <li class="social-widgets-facebook"> <div class="fb-like" data-href="https://www.facebook.com/winscp/" data-layout="button_count" data-action="like" data-size="small" data-show-faces="false" data-share="true"></div> </li> <li class="social-widgets-twitter"> <a href="https://x.com/share" class="twitter-share-button" data-count="vertical" data-via="winscpnet">Tweet</a> </li> </ul> </section> <div class="promo-block hidden-sm hidden-xs"> <p class="promo-block-content"> <em>Advertisement</em> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block;min-height: 90px" data-ad-client="ca-pub-1682759925159355" data-ad-slot="2824344559" data-ad-format="rectangle"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </p> </div> <section class="latest-forum-topics-list plain-links-list-widget nav"> <h2>Most Read</h2> <ul class="list-unstyled winscp-list"> <li> <a href="/eng/docs/ui_login">Login Dialog – Configuring Session</a> </li> <li> <a href="/eng/docs/ui_commander">Using Commander Interface</a> </li> <li> <a href="/eng/docs/guide_windows_openssh_server">Installing SFTP/SSH Server on Windows using OpenSSH</a> </li> <li> <a href="/eng/docs/ui_authenticate">Authentication Progress</a> </li> <li> <a href="/eng/docs/guide_automation">Automate file transfers or file synchronization</a> </li> <li> <a href="/eng/docs/guide_connect">Connect to FTP server or SFTP server</a> </li> <li> <a href="/eng/docs/ui_opendir">Bookmark Dialog</a> </li> <li> <a href="/eng/docs/guide_public_key">Set up SSH public key authentication</a> </li> <li> <a href="/eng/docs/guide_amazon_s3">Connecting to Amazon AWS S3 cloud storage</a> </li> </ul> </section> <section class="user-page-meta"> <ul class="list-unstyled winscp-list"> <li> <form class="button" method="post" action="/eng/docs/library"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="" /><input type="submit" value="Edit this page" class="btn btn-lg btn-primary small-mb" title="Alt+Shift+E" accesskey="e" /></form> </li> <li> <form class="button" method="get" action="/eng/docs/library"><input type="hidden" name="do" value="revisions" /><input type="submit" value="Old revisions" class="btn btn-lg btn-secondary" title="Alt+Shift+O" accesskey="o" /></form> </li> </ul> </section> </aside> </div> <footer class="page-last-edited"> <p>Last modified: <time datetime="2024-07-06T17:30:00+0000">2024-07-06</time> by <a href="/forum/profile.php?mode=viewprofile&u=2">martin</a></p> </footer> </main> <div class="footer"> <div class="container"> <div class="row"> <div class="col-sm-12 col-md-2 pull-right"> <div id="footerLogin"> <a href="/eng/docs/library?do=login" class="btn btn-default btn-footer">Login</a> </div> <div id="footerLanguage" class="btn-group dropup"> <button type="button" class="btn btn-default dropdown-toggle btn-footer" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> English <span class="caret"></span> </button> <ul class="dropdown-menu"> <li><a href="/chs/">简体中文</a></li> <li><a href="/cht/">正體中文 (繁體)</a></li> <li><a href="/cs/">Česky</a></li> <li><a href="/da/">Danish</a></li> <li><a href="/de/">Deutsch</a></li> <li><a href="/eng/">English</a></li> <li><a href="/es/">Español (Castellano)</a></li> <li><a href="/et/">Eesti keel</a></li> <li><a href="/fr/">Français</a></li> <li><a href="/hr/">Hrvatski</a></li> <li><a href="/hu/">Magyar</a></li> <li><a href="/it/">Italiano</a></li> <li><a href="/jp/">日本語</a></li> <li><a href="/ko/">한국어</a></li> <li><a href="/lt/">Lietuvių</a></li> <li><a href="/nl/">Nederlands</a></li> <li><a href="/pl/">Polski</a></li> <li><a href="/ro/">Română</a></li> <li><a href="/ru/">Русский</a></li> <li><a href="/sk/">Slovensky</a></li> <li><a href="/srl/">Srpski</a></li> <li><a href="/uk/">Українська</a></li> </ul> </div> </div> <div class="col-sm-12 col-md-10"> <div class="col-xs-12 col-sm-3"> <h2 class="footer-header">Documentation</h2> <ul class="list-unstyled"> <li><a href="/eng/docs/getting_started">Quick Start</a></li> <li><a href="/eng/docs/guides">Guides</a></li> <li><a href="/eng/docs/free_ftp_client_for_windows">FTP Client</a></li> <li><a href="/eng/docs/free_sftp_client_for_windows">SFTP Client</a></li> <li><a href="/eng/docs/free_ssh_client_for_windows">SSH Client</a></li> <li><a href="/eng/docs/free_s3_client_for_windows">S3 Client</a></li> <li><a href="/eng/docs/languages">Languages</a></li> <li><a href="/eng/docs/scripting">Scripting</a></li> <li><a href="/eng/docs/library">.NET and COM Library</a></li> <li><a href="/eng/docs/commandline">Command Line Options</a></li> <li><a href="/eng/docs/portable">Portable Use</a></li> </ul> </div> <div class="col-xs-12 col-sm-3"> <h2 class="footer-header">Support</h2> <ul class="list-unstyled"> <li><a href="/eng/docs/support">Get Support</a></li> <li><a href="/eng/docs/faq">FAQ</a></li> <li><a href="/eng/docs/troubleshooting">Troubleshooting</a></li> <li><a href="/forum/">Support Forum</a></li> <li><a href="/eng/docs/history">History</a></li> <li><a href="/tracker/">Bug Tracker</a></li> </ul> </div> <div class="col-xs-12 col-sm-3"> <h2 class="footer-header">Associations</h2> <ul class="list-unstyled"> <li><a href="https://github.com/winscp/winscp">GitHub</a></li> <li><a href="https://sourceforge.net/projects/winscp/">SourceForge</a></li> <li><a href="https://teamforge.net/">TeamForge.net</a></li> <li><a href="https://www.dokuwiki.org/">DokuWiki</a></li> <li><a href="https://www.phpbb.com/">phpBB</a></li> </ul> </div> <div class="col-xs-12 col-sm-3"> <h2 class="footer-header">Follow Us</h2> <ul class="list-unstyled"> <li><a rel="me" href="https://www.facebook.com/winscp/">Facebook</a></li> <li><a rel="me" href="https://x.com/winscpnet">X</a></li> <li><a rel="me" href="https://mastodon.social/@winscp">Mastodon</a></li> <li><a rel="me" href="https://bsky.app/profile/winscp.net">Bluesky</a></li> <li><a rel="me" href="https://www.linkedin.com/company/winscp/">LinkedIn</a></li> <li><a href="/feed.php">RSS News</a></li> </ul> </div> </div> </div> </div> <footer> <div class="container"> <div class="row"> <p> &copy; All rights reserved 2000&ndash;2025, WinSCP.net </p> <ul class="list-inline"> <li> <a href="/eng/docs/license">WinSCP License</a> </li> <li> <a href="/eng/docs/privacy">WinSCP Privacy Policy</a> </li> </ul> </div> </div> </footer> </div> </div> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/jquery.min.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/bootstrap.min.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/slick/slick.min.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/footer.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/svg-src-polyfill.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/slick-init.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/matchMedia.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/mediaQueryListener.js?v=101"></script> <script defer src="https://winscp-static-746341.c.cdn77.org/assets/js/jquery.toggleSections.js?v=101"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10