Heim > Backend-Entwicklung > C++ > Wie lese und ändere ich NTFS Alternate Data Streams (ADS) mit .NET?

Wie lese und ändere ich NTFS Alternate Data Streams (ADS) mit .NET?

Susan Sarandon
Freigeben: 2025-01-01 07:36:11
Original
861 Leute haben es durchsucht

How to Read and Modify NTFS Alternate Data Streams (ADS) using .NET?

Lesen und Ändern von alternativen NTFS-Datenströmen mit .NET

Einführung

Alternative Datenströme (ADS) sind eine Funktion des NTFS-Dateisystems, die das Anhängen zusätzlicher Daten an Dateien über ihren primären Datenstrom hinaus ermöglicht. Diese hinzugefügten Daten können für verschiedene Zwecke nützlich sein, beispielsweise zum Speichern von Metadaten, Anhängen oder Versionsinformationen.

ADS lesen

Zum Lesen eines ADS aus einer Datei mit . NET können Sie die Funktion „CreateFileW“ in der Bibliothek „kernel32.dll“ verwenden. Die Funktion „CreateFileW“ verwendet einen Dateipfad und einen Stream-Namen als Parameter. Wenn der Stream vorhanden ist, gibt die Funktion ein Handle an den Stream zurück, das Sie dann zum Lesen von Daten verwenden können.

ADS ändern

Um ein vorhandenes ADS zu ändern oder zu erstellen Um ein neues zu erstellen, können Sie die WriteFile-Funktion verwenden. Die WriteFile-Funktion benötigt ein Dateihandle und einen Datenpuffer als Parameter. Sie können den Stream-Namen im Dateipfad angeben, wenn Sie CreateFileW aufrufen, um einen bestimmten Stream zum Schreiben auszuwählen.

Beispiel

Hier ist ein Beispiel für das Lesen und Ändern ein ADS mit .NET:

using System.Runtime.InteropServices;

class Program
{
    static void Main(string[] args)
    {
        var mainStream = NativeMethods.CreateFileW(
            "testfile",
            NativeConstants.GENERIC_WRITE,
            NativeConstants.FILE_SHARE_WRITE,
            IntPtr.Zero,
            NativeConstants.OPEN_ALWAYS,
            0,
            IntPtr.Zero);

        var stream = NativeMethods.CreateFileW(
            "testfile:stream",
            NativeConstants.GENERIC_WRITE,
            NativeConstants.FILE_SHARE_WRITE,
            IntPtr.Zero,
            NativeConstants.OPEN_ALWAYS,
            0,
            IntPtr.Zero);
    }
}

public partial class NativeMethods
{

    /// Return Type: HANDLE->void*
    ///lpFileName: LPCWSTR->WCHAR*
    ///dwDesiredAccess: DWORD->unsigned int
    ///dwShareMode: DWORD->unsigned int
    ///lpSecurityAttributes: LPSECURITY_ATTRIBUTES->_SECURITY_ATTRIBUTES*
    ///dwCreationDisposition: DWORD->unsigned int
    ///dwFlagsAndAttributes: DWORD->unsigned int
    ///hTemplateFile: HANDLE->void*
    [DllImportAttribute("kernel32.dll", EntryPoint = "CreateFileW")]
    public static extern System.IntPtr CreateFileW(
        [InAttribute()] [MarshalAsAttribute(UnmanagedType.LPWStr)] string lpFileName, 
        uint dwDesiredAccess, 
        uint dwShareMode, 
        [InAttribute()] System.IntPtr lpSecurityAttributes, 
        uint dwCreationDisposition, 
        uint dwFlagsAndAttributes, 
        [InAttribute()] System.IntPtr hTemplateFile
    );

}


public partial class NativeConstants
{

    /// GENERIC_WRITE -> (0x40000000L)
    public const int GENERIC_WRITE = 1073741824;

    /// FILE_SHARE_DELETE -> 0x00000004
    public const int FILE_SHARE_DELETE = 4;

    /// FILE_SHARE_WRITE -> 0x00000002
    public const int FILE_SHARE_WRITE = 2;

    /// FILE_SHARE_READ -> 0x00000001
    public const int FILE_SHARE_READ = 1;

    /// OPEN_ALWAYS -> 4
    public const int OPEN_ALWAYS = 4;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lese und ändere ich NTFS Alternate Data Streams (ADS) mit .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage