From 17ab6b6399dbe07e478478e9eba9aeb345eab2ed Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Thu, 15 Oct 2020 11:21:31 +1100 Subject: [PATCH] win32 symlink: only use the unprivileged flag if windows is new enough --- win32/win32.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/win32/win32.c b/win32/win32.c index 1046f6c..8cbe4da 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -3432,7 +3432,15 @@ win32_symlink(const char *oldfile, const char *newfile) char szTargetName[MAX_PATH+1]; size_t oldfile_len = strlen(oldfile); DWORD dest_attr; - DWORD create_flags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE; + DWORD create_flags = 0; + + /* this flag can be used only on Windows 10 1703 or newer */ + if (g_osver.dwMajorVersion > 10 || + (g_osver.dwMajorVersion == 10 && + (g_osver.dwMinorVersion > 0 || g_osver.dwBuildNumber > 15063))) + { + create_flags |= SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE; + } /* oldfile might be relative and we don't want to change that, so don't map that. -- 1.8.3.1