diff --git a/src/vkcv/File.cpp b/src/vkcv/File.cpp
index 52c6d3d309b0f66c897b3f1d4936bfdc485dda74..df303afc6771600d9e277bc16057a8a1b68743b8 100644
--- a/src/vkcv/File.cpp
+++ b/src/vkcv/File.cpp
@@ -2,7 +2,14 @@
 #include "vkcv/File.hpp"
 
 #include <stdlib.h>
+
+#ifdef _WIN32
+#include <io.h>
+#else
 #include <unistd.h>
+#endif
+
+#include "vkcv/Logger.hpp"
 
 namespace vkcv {
 	
@@ -15,13 +22,25 @@ namespace vkcv {
 		}
 		
 		char name [16] = "vkcv_tmp_XXXXXX";
+		
+#ifdef _WIN32
+		int err = _mktemp_s(name, 16);
+		
+		if (err != 0) {
+			vkcv_log(LogLevel::ERROR, "Temporary file path could not be generated");
+			return "";
+		}
+#else
 		int fd = mkstemp(name);
 		
 		if (fd == -1) {
+			vkcv_log(LogLevel::ERROR, "Temporary file path could not be generated");
 			return "";
 		}
 		
 		close(fd);
+#endif
+		
 		return tmp / name;
 	}