A modern, high-performance C++20 / CMake solution that automatically detects Linux disks & USBs (when inserted or already present), validates and parses Linux data partitions (Ext2/3/4), strictly excludes boot/system/swap partitions, protects write safety with read-only enforcement, and projects data partitions as native Windows folders using Windows Projected File System (ProjFS).

- Automatic Disk & Hotplug Monitoring:

- Detects all existing physical drives (PhysicalDrive0..PhysicalDriveN).

- Listens in real-time for USB and external disk insertion and removal via Win32 WM_DEVICECHANGEdevice interface hooks.

- Detects all existing physical drives (

- Strict Data-Only Partition Filtering:

- Automatically inspects GPT and MBR partition tables.

- Allowed Data Partitions: Linux Filesystem Data, Linux /home, Linux Root (x86_64,arm64,x86),/srv,/var, and user data partitions.

- Excluded Partitions: EFI System Partitions (ESP), BIOS Boot, Linux /boot, Linux Swap, Microsoft Reserved (MSR), Microsoft Recovery.

- Zero-Dependency Ext2/Ext3/Ext4 Engine:

- Built-in, self-contained parser supporting 64-bit block addressing, extents trees, directory hash/linear entries, fast & regular symlinks, and inode table parsing.

- Native Windows Explorer Integration (ProjFS):

- Projects the Linux filesystem directly into C:\LinuxDisks\Disk<N>_Part<M>using the Windows Projected File System.

- Standard Windows Explorer operations: double-click to open files, view properties, drag-and-drop, and copy files/folders directly to Windows drives.

- Projects the Linux filesystem directly into

- Enforced Read-Only Safety:

- Drive handles opened strictly in GENERIC_READmode withFILE_SHARE_READ | FILE_SHARE_WRITE.

- File attributes tagged with FILE_ATTRIBUTE_READONLY.

- All write, modify, truncate, and delete operations are blocked (ERROR_ACCESS_DENIED).

- Drive handles opened strictly in

- Memory-Resident Background Daemon & System Tray:

- Runs quietly in the notification area with a sleek context menu.

- Interactive permission prompt asking user consent for Windows startup.

- Desktop balloon notifications when Linux partitions are mounted or unmounted.

Linux2Win provides an integrated Windows Setup Wizard (linux2win_setup.exe):

- Interactive Startup Permission: Asks for permission to load on Windows startup in memory-resident background mode.

- Explorer Shortcuts: Automatically creates desktop and Start Menu shortcuts to C:\LinuxDisks.

- ProjFS Feature Activator: Enables the Windows Projected File System feature if not active.

- Clean Uninstallation: Registers with Windows Add or Remove Programs and generates uninstall.exe.

# Scan all physical drives and classify partitions (shows data vs excluded boot/swap partitions)

.\linux2win.exe scan

# Start real-time hotplug monitor (detects USB / drive insertion and removal)

.\linux2win.exe monitor

# Auto-mount all detected Linux data partitions to Windows folders

.\linux2win.exe auto

# Mount a specific Linux data partition as a Windows folder via ProjFS

.\linux2win.exe mount <disk_index> <partition_number> [target_folder]

# Example:

.\linux2win.exe mount 1 2 C:\LinuxDisks\Drive1_Part2

# List directory contents on a Linux partition

.\linux2win.exe ls <disk_index> <partition_number> [path]

# Example:

.\linux2win.exe ls 1 2 /home/user

# Display contents of a file on Linux partition

.\linux2win.exe cat <disk_index> <partition_number> <file_path>

# Safely copy/export a file or folder from Linux partition to Windows

.\linux2win.exe export <disk_index> <partition_number> <linux_path> <windows_target_dir>

# Example:

.\linux2win.exe export 1 2 /etc/fstab C:\Users\YourUser\Desktop- Visual Studio 2022 (with MSVC C++20 toolchain)

- CMake 3.20+

- Windows 10 (1809+) or Windows 11

# Clone the repository

git clone https://github.com/APS-PPR-2016/Linux2Win.git

cd Linux2Win

# Configure with MSVC 2022

cmake -B build -G "Visual Studio 17 2022" -A x64

# Build Release binaries

cmake --build build --config Release

# Run automated unit tests

cd build

ctest -C Release --output-on-failure

# Package ZIP distribution

cpack -C Release -G ZIPIf you find Linux2Win useful, please consider supporting the project:

This project is licensed under the MIT License.