Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membaca dan Mengubah Suai NTFS Alternate Data Streams (ADS) menggunakan .NET?

Bagaimana untuk Membaca dan Mengubah Suai NTFS Alternate Data Streams (ADS) menggunakan .NET?

Susan Sarandon
Susan Sarandonasal
2025-01-01 07:36:11885semak imbas

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

Membaca dan Mengubah suai Strim Data Ganti NTFS dengan .NET

Pengenalan

Strim Data Gantian (ADS) ialah ciri sistem fail NTFS yang membenarkan data tambahan dilampirkan pada fail di luar aliran data utama mereka. Data tambahan ini boleh berguna untuk pelbagai tujuan, seperti menyimpan metadata, lampiran atau maklumat versi.

Membaca ADS

Untuk membaca ADS daripada fail menggunakan . NET, anda boleh menggunakan fungsi CreateFileW dalam pustaka kernel32.dll. Fungsi CreateFileW mengambil laluan fail dan nama strim sebagai parameter. Jika strim wujud, fungsi mengembalikan pemegang kepada strim, yang kemudiannya boleh anda gunakan untuk membaca data.

Mengubah suai ADS

Untuk mengubah suai ADS sedia ada atau mencipta yang baharu, anda boleh menggunakan fungsi WriteFile. Fungsi WriteFile mengambil pemegang fail dan penimbal data sebagai parameter. Anda boleh menentukan nama strim dalam laluan fail apabila memanggil CreateFileW untuk menyasarkan strim tertentu untuk menulis.

Contoh

Berikut ialah contoh cara membaca dan mengubah suai IKLAN menggunakan .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;
}

Atas ialah kandungan terperinci Bagaimana untuk Membaca dan Mengubah Suai NTFS Alternate Data Streams (ADS) menggunakan .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn