diff --git a/Makefile.am b/Makefile.am
index e380eabf..06c66f33 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,6 +9,16 @@ mktest_LDFLAGS = -framework CoreFoundation -framework DiskArbitration
mkstream_LDFLAGS = -framework CoreFoundation -framework DiskArbitration
endif
+# Windows
+if HOST_WINDOWS
+snapraid_LDADD = resource_res.o
+
+resource_res.o: cmdline/resource.rc cmdline/resource.manifest
+ $(WINDRES) --include-dir=. --include-dir=$(srcdir) $< -o $@
+
+CLEANFILES = resource_res.o
+endif
+
snapraid_SOURCES = \
raid/raid.c \
raid/check.c \
@@ -151,6 +161,8 @@ EXTRA_DIST = \
test/test-par6-rename.conf \
test/test-par6-thermal.conf \
snapraid.conf.example \
+ cmdline/resource.rc \
+ cmdline/resource.manifest \
configure.windows-x86 configure.windows-x64 snapraid.conf.example.windows \
acinclude.m4 \
tommyds/LICENSE \
diff --git a/cmdline/resource.manifest b/cmdline/resource.manifest
new file mode 100644
index 00000000..2b9a500c
--- /dev/null
+++ b/cmdline/resource.manifest
@@ -0,0 +1,40 @@
+
+
+
+
+ SnapRAID Windows Daemon Service
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ UTF-8
+
+
+ SegmentHeap
+
+
+
diff --git a/cmdline/resource.rc b/cmdline/resource.rc
new file mode 100644
index 00000000..46e7c6d0
--- /dev/null
+++ b/cmdline/resource.rc
@@ -0,0 +1,35 @@
+#include
+
+#include "../config.h"
+
+1 RT_MANIFEST "resource.manifest"
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,0
+ PRODUCTVERSION 1,0,0,0
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ // 0409 = US English; 04b0 = Unicode (UTF-16)
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "Andrea Mazzoleni"
+ VALUE "FileDescription", "SnapRAID CLI"
+ VALUE "FileVersion", PACKAGE_VERSION
+ VALUE "InternalName", "snapraid"
+ VALUE "LegalCopyright", "Copyright (C) 2026 Andrea Mazzoleni"
+ VALUE "OriginalFilename", "snapraid.exe"
+ VALUE "ProductName", "SnapRAID"
+ VALUE "ProductVersion", PACKAGE_VERSION
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
diff --git a/configure.ac b/configure.ac
index 07ea5c40..274b9712 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,6 +19,17 @@ AC_CHECK_PROG([SDE],[sde64],[sde64],[])
AC_CHECK_PROG([ADVD2],[advd2],[advd2],[])
AM_CONDITIONAL(HAVE_ADVD2, [test x"$ADVD2" != x])
+# Check if we are targeting Windows
+is_windows=no
+AS_CASE([$host_os], [mingw*|msys*|cygwin*], [is_windows=yes])
+AM_CONDITIONAL([HOST_WINDOWS], [test "x$is_windows" = "xyes"])
+
+# Check for Windows-specific tools only if on Windows
+if test "x$is_windows" = "xyes"; then
+ AC_CHECK_TOOL([WINDMC], [windmc])
+ AC_CHECK_TOOL([WINDRES], [windres])
+fi
+
dnl Options to improve stacktrace (some disabled as no crash reported by years)
AC_CHECK_CC_OPT([-fno-omit-frame-pointer], CFLAGS="$CFLAGS -fno-omit-frame-pointer", [])
# AC_CHECK_CC_OPT([-fno-inline-functions-called-once], CFLAGS="$CFLAGS -fno-inline-functions-called-once", [])