diff --git a/core/libs/tests/GuestKqueue.cpp b/core/libs/tests/GuestKqueue.cpp index c3061a2c63..aecb4a9885 100644 --- a/core/libs/tests/GuestKqueue.cpp +++ b/core/libs/tests/GuestKqueue.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #ifdef _WIN32 #include #include @@ -539,9 +540,14 @@ static std::string Utf8(const std::wstring& text) { } static PACL DenyListing(const std::wstring& directory, PSECURITY_DESCRIPTOR& owner) { - wchar_t account[256]{}; - DWORD count = static_cast(sizeof(account) / sizeof(account[0])); - Require(::GetUserNameW(account, &count) != FALSE); + HANDLE token = nullptr; + Require(::OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY, &token) != FALSE); + DWORD size = 0; + ::GetTokenInformation(token, TokenUser, nullptr, 0, &size); + std::vector user(size); + const BOOL queried = ::GetTokenInformation(token, TokenUser, user.data(), size, &size); + ::CloseHandle(token); + Require(queried != FALSE); PACL original = nullptr; Require(::GetNamedSecurityInfoW(directory.c_str(), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nullptr, nullptr, &original, nullptr, &owner) == ERROR_SUCCESS); @@ -549,9 +555,9 @@ static PACL DenyListing(const std::wstring& directory, PSECURITY_DESCRIPTOR& own denied.grfAccessPermissions = FILE_LIST_DIRECTORY; denied.grfAccessMode = DENY_ACCESS; denied.grfInheritance = NO_INHERITANCE; - denied.Trustee.TrusteeForm = TRUSTEE_IS_NAME; + denied.Trustee.TrusteeForm = TRUSTEE_IS_SID; denied.Trustee.TrusteeType = TRUSTEE_IS_USER; - denied.Trustee.ptstrName = account; + denied.Trustee.ptstrName = static_cast(reinterpret_cast(user.data())->User.Sid); PACL blocked = nullptr; Require(::SetEntriesInAclW(1, &denied, original, &blocked) == ERROR_SUCCESS); const DWORD applied = ::SetNamedSecurityInfoW(const_cast(directory.c_str()), SE_FILE_OBJECT,