Desktop Functions:

   Smart Device Functions:

Show Recent Changes
Subscribe (RSS)
Misc. Pages
Helpful Tools
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
CopyFile (kernel32)

C# Signature:

[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
static extern bool CopyFile(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);

[DllImport("kernel32.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool CopyFile(
  [MarshalAs(UnmanagedType.LPWStr)]string lpExistingFileName,
  [MarshalAs(UnmanagedType.LPWStr)]string lpNewFileName,
  [MarshalAs(UnmanagedType.Bool)]bool bFailIfExists);

User-Defined Types:



use \\?\UNC\<server>\<share>\<path>\<filename> to access files over the network with long paths - NathanV.

Tips & Tricks:

Please add some!

Sample Code - C# - sivakumar.keerthi

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Runtime.InteropServices;

using System.Diagnostics;

namespace WindowsApplication1


    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
        /// <summary>
        /// Required designer variable.
        /// </summary>
        static extern bool CopyFile(string lpExistingFileName, string lpNewFileName,bool bFailIfExists);

        private System.ComponentModel.Container components = null;

        public Form1()
            // Required for Windows Form Designer support
            // TODO: Add any constructor code after InitializeComponent call

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
            if( disposing )
                if (components != null)
            base.Dispose( disposing );

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
            // Form1
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(528, 266);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);


        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
            Application.Run(new Form1());

        private void Form1_Load(object sender, System.EventArgs e)
            //true or false - if destination file not exists, it will create and write the contents of file1 to it.
            //true - If destination file exists it won't write the contents of file1 to file2.
            //false - If destination file exists it will write the contents of file1 to file2.

            CopyFile( @"C:\Source.txt" , @"C:\Destination.txt" , true );


Alternative Managed API:

public static void System.IO.File.Copy(System.String sourceFileName , System.String destFileName , System.Boolean overwrite)

CopyFile on MSDN site

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

Access directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version