[PATCH] fsutils/tests: fsutils requires elevated privileges on Windows <= 7.
Francois Gouget
fgouget at codeweavers.com
Tue Dec 1 23:34:04 CST 2020
So skip the tests if the first fsutils run fails and we don't have
elevated privileges.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
programs/fsutil/tests/Makefile.in | 2 +-
programs/fsutil/tests/fsutil.c | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/programs/fsutil/tests/Makefile.in b/programs/fsutil/tests/Makefile.in
index 5a69e47dc61..f0490b3b660 100644
--- a/programs/fsutil/tests/Makefile.in
+++ b/programs/fsutil/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = fsutil.exe
-IMPORTS = user32
+IMPORTS = advapi32 user32
C_SRCS = \
fsutil.c
diff --git a/programs/fsutil/tests/fsutil.c b/programs/fsutil/tests/fsutil.c
index 1111b5b2fed..eff47a4f8ec 100644
--- a/programs/fsutil/tests/fsutil.c
+++ b/programs/fsutil/tests/fsutil.c
@@ -21,6 +21,22 @@
#include "wine/test.h"
+static BOOL is_process_elevated(void)
+{
+ HANDLE token;
+ if (OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &token ))
+ {
+ TOKEN_ELEVATION_TYPE type;
+ DWORD size;
+ BOOL ret;
+
+ ret = GetTokenInformation( token, TokenElevationType, &type, sizeof(type), &size );
+ CloseHandle( token );
+ return (ret && type == TokenElevationTypeFull);
+ }
+ return FALSE;
+}
+
static DWORD runcmd(const char* cmd)
{
STARTUPINFOA si = { sizeof(STARTUPINFOA) };
@@ -64,6 +80,11 @@ static void test_hardlink(void)
CloseHandle(hfile);
rc = runcmd("fsutil");
+ if (rc == 1 && !is_process_elevated())
+ {
+ win_skip("Cannot run fsutil without elevated privileges on Windows <= 7\n");
+ return;
+ }
ok(rc == 0, "failed to run fsutil\n");
rc = runcmd("fsutil hardlink");
--
2.20.1
More information about the wine-devel
mailing list