.NET Framework Class Library
File..::.Encrypt Method

Encrypts a file so that only the account used to encrypt the file can decrypt it.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)
Syntax

Visual Basic (Declaration)
Public Shared Sub Encrypt ( _
    path As String _
)
Visual Basic (Usage)
Dim path As String

File.Encrypt(path)
C#
public static void Encrypt(
    string path
)
Visual C++
public:
static void Encrypt(
    String^ path
)
JScript
public static function Encrypt(
    path : String
)

Parameters

path
Type: System..::.String
A path that describes a file to encrypt.
Exceptions

ExceptionCondition
ArgumentException

The path parameter is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

ArgumentNullException

The path parameter is nullNothingnullptra null reference (Nothing in Visual Basic).

DriveNotFoundException

An invalid drive was specified.

FileNotFoundException

The file described by the path parameter could not be found.

IOException

An I/O error occurred while opening the file.

-or-

This operation is not supported on the current platform.

PathTooLongException

The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.

PlatformNotSupportedException

The current operating system is not Microsoft Windows NT or later.

NotSupportedException

The file system is not NTFS.

UnauthorizedAccessException

The path parameter specified a file that is read-only.

-or-

This operation is not supported on the current platform.

-or-

The path parameter specified a directory.

-or-

The caller does not have the required permission.

Remarks

The Encrypt method allows you to encrypt a file so that only the account used to call this method can decrypt it. Use the Decrypt method to decrypt a file encrypted by the Encrypt method.

The Encrypt method requires exclusive access to the file being encrypted, and will fail if another process is using the file.

Both the Encrypt method and the Decrypt method use the cryptographic service provider (CSP) installed on the computer and the file encryption keys of the process calling the method.

The current file system must be formatted as NTFS and the current operating system must be Microsoft Windows NT or later.

Examples

The following code example uses the Encrypt method and the Decrypt method to encrypt and then decrypt a file.

Visual Basic
Imports System
Imports System.IO
Imports System.Security.AccessControl



Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "test.xml"

            Console.WriteLine("Encrypt " + FileName)

            ' Encrypt the file.
            AddEncryption(FileName)

            Console.WriteLine("Decrypt " + FileName)

            ' Decrypt the file.
            RemoveEncryption(FileName)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub


    ' Encrypt a file.
    Sub AddEncryption(ByVal FileName As String)

        File.Encrypt(FileName)

    End Sub


    ' Decrypt the file.
    Sub RemoveEncryption(ByVal FileName As String)

        File.Decrypt(FileName)

    End Sub
End Module
C#
using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = "test.xml";

                Console.WriteLine("Encrypt " + FileName);

                // Encrypt the file.
                AddEncryption(FileName);

                Console.WriteLine("Decrypt " + FileName);

                // Decrypt the file.
                RemoveEncryption(FileName);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }


        // Encrypt a file.
        public static void AddEncryption(string FileName)
        {

            File.Encrypt(FileName);

        }

        // Decrypt a file.
        public static void RemoveEncryption(string FileName)
        {
            File.Decrypt(FileName);
        }
    }
}
Visual C++
using namespace System;
using namespace System::IO;

int main()
{
    String^ fileName = "test.xml";
    if (!File::Exists(fileName))
    {
        Console::WriteLine("The file " + fileName
            + " does not exist.");
        return 0;
    }
    try
    {
        Console::WriteLine("Encrypt " + fileName);

        // Encrypt the file.
        File::Encrypt(fileName);

        Console::WriteLine("Decrypt " + fileName);

        // Decrypt the file.
        File::Decrypt(fileName);

        Console::WriteLine("Done");
    }
    catch (IOException^ ex)
    {
        Console::WriteLine("There was an IO problem.");
        Console::WriteLine(ex->Message);
    }
    catch (PlatformNotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (NotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("The operation could not be "
            + "carried out.");
    }
}
.NET Framework Security

  • FileIOPermission 

    for permission to read and write to the file described by the path parameter. Associated enumerations: Read, Write

    Security action: Demand.

Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0
See Also

Reference

Tags :


Community Content

Nick Brown - NPB Consultants Ltd
How to re-encrypt the file encryption key only?
I'm looking to do the equivalent of "cipher /u" in C#. Anyone know how to achieve this programmatically?

Tags :

Jochen Kalmbach
XP / Vista / Win7 Home Editions and file encryption
In XP Home / Vista Home / Vista Home premium, file encryption is only support under the "Home-Directory".
So the docu is wrong!
The sentence "and the current operating system must be Microsoft Windows NT or later." should be renmoved.
Also the "Platforms" should be more cleary about which OS version of XP/Vista/Win7 is supported...

See also:
How to encrypt a file in Windows XP
http://support.microsoft.com/kb/307877/en-us
Quote: The EFS feature is not included in Microsoft Windows XP Home Edition.

Page view tracker