X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwin32_apply.c;h=ef0823ab0340c7ee7bab0cfa21e1bd3f06cba2f3;hb=bb8c4222f31ab9b6a62088e661e44d2de71de91a;hp=347407326f914d3c358c0ade3c9928541f640169;hpb=da43effd1d1d4b8a502ad3fccc0b579131cc8c50;p=wimlib diff --git a/src/win32_apply.c b/src/win32_apply.c index 34740732..ef0823ab 100644 --- a/src/win32_apply.c +++ b/src/win32_apply.c @@ -1661,9 +1661,13 @@ retry: * directory, even though this contradicts Microsoft's * documentation for FILE_ATTRIBUTE_READONLY which states it is * not honored for directories! */ - FILE_BASIC_INFORMATION basic_info = { .FileAttributes = FILE_ATTRIBUTE_NORMAL }; - (*func_NtSetInformationFile)(h, &ctx->iosb, &basic_info, - sizeof(basic_info), FileBasicInformation); + if (!(ctx->common.extract_flags & WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES)) { + FILE_BASIC_INFORMATION basic_info = + { .FileAttributes = FILE_ATTRIBUTE_NORMAL }; + (*func_NtSetInformationFile)(h, &ctx->iosb, &basic_info, + sizeof(basic_info), + FileBasicInformation); + } /* Also try to remove the directory's DACL. This isn't supposed * to be necessary because we *always* use backup semantics. @@ -1671,15 +1675,18 @@ retry: * STATUS_ACCESS_DENIED when creating a named data stream that * was just deleted, using a directory-relative open. I have no * idea why Windows is broken in this case. */ - static const SECURITY_DESCRIPTOR_RELATIVE desc = { - .Revision = SECURITY_DESCRIPTOR_REVISION1, - .Control = SE_SELF_RELATIVE | SE_DACL_PRESENT, - .Owner = 0, - .Group = 0, - .Sacl = 0, - .Dacl = 0, - }; - (*func_NtSetSecurityObject)(h, DACL_SECURITY_INFORMATION, (void *)&desc); + if (!(ctx->common.extract_flags & WIMLIB_EXTRACT_FLAG_NO_ACLS)) { + static const SECURITY_DESCRIPTOR_RELATIVE desc = { + .Revision = SECURITY_DESCRIPTOR_REVISION1, + .Control = SE_SELF_RELATIVE | SE_DACL_PRESENT, + .Owner = 0, + .Group = 0, + .Sacl = 0, + .Dacl = 0, + }; + (*func_NtSetSecurityObject)(h, DACL_SECURITY_INFORMATION, + (void *)&desc); + } } if (!dentry_is_root(dentry)) {