Skip to content

📁 Windows Shared Folders

Share folders from your Mac with a Windows 11 ARM64 VM. All shared folders appear under one drive letter, Z:, with one folder per share.

💡 This guide applies to Windows 11 ARM64 VMs in the VirtualProg Mac app.


✅ Before You Start

  • ✔️ The VM must be Windows 11 ARM64.
  • ✔️ You need Administrator access inside Windows.
  • ✔️ Windows must be running to mount a shared folder.
  • 🔄 You can add or remove folders while the VM is running. See Runtime Changes below.

1️⃣ Add the Shared Folder on the Mac

  1. ⏹️ Stop the VM. Open its Configuration, click +, and choose Shared Folder.
  2. 📂 Choose the folder on your Mac, and enter a Mount Name (for example Downloads).
  3. ✏️ Leave Read-Only off if you want Windows to write files.
  4. ▶️ Save the configuration, then start the VM.

Add more folders the same way. Each folder appears inside Z: under its Mount Name. All folders share one VirtIO-FS device, so you mount Z: once.


2️⃣ Install WinFsp

WinFsp is the user-mode file system that VirtIO-FS uses inside Windows.

  1. In Windows, download the latest WinFsp installer from github.com/winfsp/winfsp/releases.
  2. Run the installer and keep the default options.
  3. Restart Windows if the installer asks you to.

3️⃣ Install the VirtIO-FS Driver

The VirtIO-FS driver and virtiofs.exe come from the virtio-win ISO that VirtualProg bundles.

  1. Check that the virtio-win CD is attached to the VM. In VirtualProg, open the VM's Configuration and check the CD/DVD section. If it is not there, add virtio-win.iso.
  2. Open the CD in File Explorer.
  3. Copy the viofs\w11\ARM64 folder to C:\Program Files\viofs. The folder must contain virtiofs.exe, viofs.sys, and viofs.inf.
  4. Right-click Start and choose Device Manager.
  5. Expand Other devices, right-click Mass Storage Folder, and choose Update driver.
  6. Choose Browse my computer for drivers, click Browse…, select C:\Program Files\viofs, and click Next. Do not tick Include subfolders.
  7. Allow the installation if Windows asks. The Mass Storage Folder entry moves out of Other devices.
  8. Restart Windows if prompted.

Check that the files are in place in an Administrator Command Prompt:

dir "C:\Program Files\viofs"

4️⃣ Mount a Shared Folder

Open an Administrator Command Prompt and run:

"C:\Program Files\viofs\virtiofs.exe" -m Z: -t VirtualProg
  • -m Z: is the drive letter to use.
  • -t VirtualProg is the tag VirtualProg uses for its shared folders. Keep it exactly as shown.

The command keeps running while the drive is mounted. Open a second window to use the drive, or close the first to unmount it. Then open File Explorer and check This PC for drive Z:. Each shared folder appears as a folder inside Z:.

💡 To see log output while you troubleshoot, add -d -1 -D -. This prints debug output to the console.


We recommend running the service so the drive mounts automatically every time Windows starts, without keeping a Command Prompt open. Run this once:

sc.exe create VirtioFsVirtualProg binPath="C:\Program Files\viofs\virtiofs.exe -m Z: -t VirtualProg" start=delayed-auto depend="WinFsp.Launcher" DisplayName= "VirtIO-FS VirtualProg"
sc.exe failure VirtioFsVirtualProg reset= 86400 actions= restart/5000/restart/5000/restart/30000
sc.exe start VirtioFsVirtualProg

Check that the service is running:

sc.exe query VirtioFsVirtualProg

Notes:

  • Keep the spaces after = in sc.exe commands. They are required.
  • start=delayed-auto starts the service after the other boot services, so the VirtIO-FS driver is ready first. If you already created the service with start=auto, change it with sc.exe config VirtioFsVirtualProg start= delayed-auto.
  • sc.exe failure restarts the service if it exits early, for example when the driver is not ready yet.
  • depend= WinFsp.Launcher makes the service start after WinFsp.
  • To remove the service, stop it first with sc.exe stop VirtioFsVirtualProg, then run sc.exe delete VirtioFsVirtualProg.

🔄 Runtime Changes

You can add or remove shared folders while the VM is running. Use the Shared Folders button in the VM window toolbar, the same as on Mac and Linux VMs.

Action How Notes
➕ Add Choose a folder on the Mac and enter a Mount Name. Press F5 in File Explorer to show it inside Z:.
➖ Remove Select the folder and detach it. Press F5 in File Explorer to refresh. Detach is refused while Windows has files from that folder open. Close them, then try again.

⚠️ Runtime folders last only for the current session. They are not saved to the configuration and are removed when the VM stops. To keep a folder, add it in Configuration while the VM is stopped.


📥 Drag and Drop Files

Drag files or folders from Finder onto the VM window to copy them into a writable shared folder.

  • ✅ One writable folder: items are copied there immediately.
  • 🗂️ Several writable folders: a picker lets you choose the destination.
  • 🚫 No writable folders: the window shows a red overlay and an alert explains how to add one.

Read-only folders are not available as drop targets. Runtime folders are included.


🛠️ Troubleshooting

Problem What to check
Z: is empty Check that the VM was stopped and started after adding the folder, and that -t VirtualProg is correct.
A folder is missing inside Z: Check that its Mount Name is valid (no /, not . or ..) and not duplicated.
Writes fail with "device not functioning" Check that the shared folder is not Read-Only in VirtualProg, then restart the VM.
Drive does not appear after reboot Check that the service is delayed-auto (sc.exe qc VirtioFsVirtualProg) and running with sc.exe query. Then restart the VM.
Cannot move a file between two shared folders Each folder is a separate share. Copy the file, then delete the original.
Command fails with "not found" Check the path to virtiofs.exe and that the viofs\w11\ARM64 folder was copied.