/*** Copyright (c) 1995 Microsoft Corporation Module Name: GetR(i)ghts.c Abstract: Command line test tool for testing the NDS GetEffectiveRights API. Author: Glenn Curtis [glennc] 22-Apr-96 ***/ #include int _cdecl main( int argc, char **argv ) { DWORD status = NO_ERROR; HANDLE hObject; OEM_STRING OemArg; UNICODE_STRING ObjectName; WCHAR lpObjectName[256]; WCHAR TempName[256]; WCHAR lpSubjectName[256]; WCHAR lpAttributeName[256]; DWORD dwRights; ObjectName.Length = 0; ObjectName.MaximumLength = sizeof( lpObjectName ); ObjectName.Buffer = lpObjectName; // // Check the arguments. // if ( argc != 2 ) { Usage: printf( "\nUsage: GetRights \n" ); printf( " where: Object Path = \\\\\\\n" ); return -1; } OemArg.Length = strlen( argv[1] ); OemArg.MaximumLength = OemArg.Length; OemArg.Buffer = argv[1]; RtlOemStringToUnicodeString( &ObjectName, &OemArg, FALSE ); status = NwNdsOpenObject( ObjectName.Buffer, NULL, NULL, &hObject, NULL, NULL, NULL, NULL, NULL ); if ( status ) { printf( "\nError: NwNdsOpenObject returned status 0x%.8X\n", status ); printf( "Error: GetLastError returned: 0x%.8X\n\n", GetLastError() ); return -1; } printf( "Subject name (Ex. joe.sales.acme) : " ); GetStringOrDefault( lpSubjectName, L"" ); printf( "Attribute name (Ex. A particular attribute like Surname, [All Attributes Rights],\nor [Entry Rights]) : " ); GetStringOrDefault( lpAttributeName, L"" ); status = NwNdsGetEffectiveRights( hObject, lpSubjectName, lpAttributeName, &dwRights ); if ( status ) { printf( "\nError: NwNdsGetEffectiveRights returned status 0x%.8X\n", status ); printf( "Error: GetLastError returned: 0x%.8X\n\n", GetLastError() ); return -1; } printf( "NwNdsGetEffectiveRights returned: 0x%.8X\n\n", dwRights ); status = NwNdsCloseObject( hObject ); if ( status ) { printf( "\nError: NwNdsCloseObject returned status 0x%.8X\n", status ); printf( "Error: GetLastError returned: 0x%.8X\n\n", GetLastError() ); return -1; } }