26#define WIN32_NO_STATUS
39DEFINE_GUID(
GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
50 ZeroMemory(&object_attributes,
sizeof(object_attributes));
51 object_attributes.
Length =
sizeof(object_attributes);
55 "LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08lx\n",
status);
59 trace(
"LsaOpenPolicy(POLICY_ALL_ACCESS) failed, trying POLICY_VIEW_LOCAL_INFORMATION|POLICY_LOOKUP_NAMES\n");
74 skip(
"Not enough rights to retrieve PolicyAuditEventsInformation\n");
83 if (primary_domain_info->
Sid) {
93 trace(
" name: %s sid: %s\n",
name, strsid);
96 trace(
" name: NULL sid: %s\n", strsid);
100 trace(
"invalid sid\n");
103 trace(
"Running on a standalone system.\n");
115 "LsaQueryInformationPolicy(PolicyDnsDomainInformation) failed, returned 0x%08lx\n",
status);
139 trace(
" name: %s domain: %s forest: %s guid: %s sid: %s\n",
148 trace(
"Running on a standalone system.\n");
162 trace(
"Resizing buffer to %lu.\n",
len);
164 if (token_user !=
NULL)
172 rights_count = 0xcafecafe;
178 ok(rights ==
NULL && rights_count == 0,
"Expected rights and rights_count to be set to 0 on failure\n");
193 DWORD user_size, dom_size;
200 user_size = dom_size = 257;
208 static const WCHAR n1[] = {
'L',
'O',
'C',
'A',
'L',
' ',
'S',
'E',
'R',
'V',
'I',
'C',
'E'};
209 static const WCHAR n2[] = {
'N',
'T',
' ',
'A',
'U',
'T',
'H',
'O',
'R',
'I',
'T',
'Y',
'\\',
'L',
'o',
'c',
'a',
'l',
'S',
'e',
'r',
'v',
'i',
'c',
'e'};
222 skip(
"Non-English locale (skipping LsaLookupNames2 tests)\n");
226 memset(&attrs, 0,
sizeof(attrs));
227 attrs.
Length =
sizeof(attrs);
231 "LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08lx\n",
status);
236 trace(
"LsaOpenPolicy(POLICY_ALL_ACCESS) failed, trying POLICY_VIEW_LOCAL_INFORMATION\n");
242 skip(
"Cannot acquire policy handle\n");
247 name[0].Length =
name[0].MaximumLength =
sizeof(
n1);
255 name[2].Length =
name[2].MaximumLength =
sizeof(
n2);
264 ok(sids[0].
Flags == 0,
"expected 0, got 0x%08lx\n", sids[0].
Flags);
268 ok(!
strcmp(sid_dom,
"NT AUTHORITY"),
"expected \"NT AUTHORITY\", got \"%s\"\n", sid_dom);
277 ok(sids[0].Use ==
SidTypeUnknown,
"expected SidTypeUnknown, got %u\n", sids[0].Use);
278 ok(sids[0].
Flags == 0,
"expected 0, got 0x%08lx\n", sids[0].
Flags);
289 ok(sids[0].
Flags == 0,
"expected 0, got 0x%08lx\n", sids[0].
Flags);
293 ok(!
strcmp(sid_dom,
"NT AUTHORITY"),
"expected \"NT AUTHORITY\", got \"%s\"\n", sid_dom);
303 ok(sids[1].Use ==
SidTypeUnknown,
"expected SidTypeUnknown, got %u\n", sids[1].Use);
305 ok(sids[0].DomainIndex == 0,
"expected 0, got %lu\n", sids[0].DomainIndex);
322 ok_(__FILE__,
line)(
string->MaximumLength ==
string->Length +
sizeof(
WCHAR),
323 "expected %Iu, got %u\n",
string->Length +
sizeof(
WCHAR),
string->MaximumLength);
327#define check_unicode_string(a, b) check_unicode_string_(__LINE__, a, b)
332 char user_buffer[64];
365 ok(
list->Entries == 1,
"got %ld\n",
list->Entries);
369 ok(!
names[0].DomainIndex,
"got index %lu\n",
names[0].DomainIndex);
382 ok(
list->Entries == 1,
"got %ld\n",
list->Entries);
386 ok(!
names[0].DomainIndex,
"got index %lu\n",
names[0].DomainIndex);
390 if (!pGetSystemPreferredUILanguages ||
391 !pGetSystemPreferredUILanguages(MUI_LANGUAGE_ID, &
num, langW, &
size))
396 else if (
wcscmp(langW,
L"0407") == 0)
399 else if (
wcscmp(langW,
L"040C") == 0)
415 ok(!
list->Entries,
"got %ld\n",
list->Entries);
419 ok(
FALSE,
"names should not be null!\n");
423 ok(
names[0].DomainIndex == -1,
"got index %lu\n",
names[0].DomainIndex);
445 memset(&attrs, 0,
sizeof(attrs));
446 attrs.
Length =
sizeof(attrs);
451 name = (
void *)0xdeadbeef;
454 ok(
name == (
void *)0xdeadbeef,
"Unexpected name pointer.\n");
456 name = (
void *)0xdeadbeef;
461 ok(
name ==
NULL,
"Unexpected name pointer.\n");
478 if (!pLsaGetUserName)
480 skip(
"LsaGetUserName is not available on this platform\n");
502 skip(
"FIXME: LsaGetUserName not implemented on ReactOS!\n");
509 status = pLsaGetUserName(&lsa_user, &lsa_domain);
524 pLsaGetUserName = (
void *)
GetProcAddress(hadvapi32,
"LsaGetUserName");
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
void account(int argc, const char *argv[])
void user(int argc, const char *argv[])
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
#define STATUS_NOT_IMPLEMENTED
#define ERROR_INSUFFICIENT_BUFFER
NTSTATUS WINAPI LsaOpenPolicy(IN PLSA_UNICODE_STRING SystemName OPTIONAL, IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE PolicyHandle)
NTSTATUS WINAPI LsaLookupPrivilegeName(IN LSA_HANDLE PolicyHandle, IN PLUID Value, OUT PUNICODE_STRING *Name)
NTSTATUS WINAPI LsaLookupSids(IN LSA_HANDLE PolicyHandle, IN ULONG Count, IN PSID *Sids, OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, OUT PLSA_TRANSLATED_NAME *Names)
NTSTATUS WINAPI LsaQueryInformationPolicy(IN LSA_HANDLE PolicyHandle, IN POLICY_INFORMATION_CLASS InformationClass, OUT PVOID *Buffer)
NTSTATUS WINAPI LsaLookupNames2(IN LSA_HANDLE PolicyHandle, IN ULONG Flags, IN ULONG Count, IN PLSA_UNICODE_STRING Names, OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, OUT PLSA_TRANSLATED_SID2 *Sids)
NTSTATUS WINAPI LsaFreeMemory(IN PVOID Buffer)
NTSTATUS WINAPI LsaEnumerateAccountRights(IN LSA_HANDLE PolicyHandle, IN PSID AccountSid, OUT PLSA_UNICODE_STRING *UserRights, OUT PULONG CountOfRights)
NTSTATUS WINAPI LsaClose(IN LSA_HANDLE ObjectHandle)
BOOL WINAPI LookupAccountSidA(LPCSTR lpSystemName, PSID lpSid, LPSTR lpName, LPDWORD cchName, LPSTR lpReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse)
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
BOOL WINAPI ConvertStringSidToSidA(LPCSTR StringSid, PSID *Sid)
PVOID WINAPI FreeSid(PSID pSid)
BOOL WINAPI ConvertSidToStringSidA(PSID Sid, LPSTR *StringSid)
#define GetProcAddress(x, y)
#define GetCurrentProcess()
#define WideCharToMultiByte
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
LCID WINAPI GetThreadLocale(void)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
LCID WINAPI GetSystemDefaultLCID(void)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
enum _SID_NAME_USE SID_NAME_USE
#define memcpy(s1, s2, n)
static void test_LsaLookupSids(void)
static ULONG WCHAR ULONG *static PUNICODE_STRING * domain
static void test_LsaLookupPrivilegeName(void)
static void check_unicode_string_(int line, const LSA_UNICODE_STRING *string, const WCHAR *expect)
static void get_sid_info(PSID psid, LPSTR *user, LPSTR *dom)
#define check_unicode_string(a, b)
static void test_LsaGetUserName(void)
static void test_lsa(void)
static void test_LsaLookupNames2(void)
#define SE_CREATE_TOKEN_PRIVILEGE
static HINSTANCE hkernel32
static WCHAR computer_name[MAX_COMPUTERNAME_LENGTH+1]
static WCHAR user_name[UNLEN+1]
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
#define STATUS_NONE_MAPPED
#define STATUS_NO_SUCH_PRIVILEGE
#define STATUS_SOME_NOT_MAPPED
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
@ PolicyAuditEventsInformation
@ PolicyDnsDomainInformation
@ PolicyPrimaryDomainInformation
@ PolicyAccountDomainInformation
struct _LSA_UNICODE_STRING * PLSA_UNICODE_STRING
#define POLICY_VIEW_LOCAL_INFORMATION
#define POLICY_ALL_ACCESS
#define POLICY_LOOKUP_NAMES
#define LANGIDFROMLCID(l)
LSA_UNICODE_STRING DnsDomainName
LSA_UNICODE_STRING DnsForestName
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_OBJECT_NAME_NOT_FOUND
DWORD WINAPI GetLastError(void)
_Must_inspect_result_ _In_ ULONG Flags