Страница 11 из 24 SetPrivilegeOnAccount( PolicyHandle, // policy handle pSid, // SID to grant privilege L"SeInteractiveLogonRight", // Unicode privilege TRUE // enable the privilege ); SetPrivilegeOnAccount( PolicyHandle, pSid, L"SeNetworkLogonRight", TRUE ); LsaClose(PolicyHandle); return 0; } 20)-------------------------------------------------------------------------- Q> Как узнать какие пользователи есть на моей (или не моей) машине A> #define STRICT #include #include #include #include void UserEnum() { BOOL keepGoing = TRUE ; DWORD entriesRead, totalEntries ; USER_INFO_2 * pInfo = NULL ; DWORD resumeHandle = 0 ; // must be 0 to start with char nameBuf[ UNLEN + 1 ] ; // constants defined in LMCONS.H char commentBuf[ MAXCOMMENTSZ + 1 ] ; WCHAR serverName[ 100 ] ; lstrcpyW( serverName, L"\\\\PDC" ) ; //L"" ) ; while ( keepGoing ) { NET_API_STATUS ret = NetUserEnum( serverName, //NULL, 2, 0, //FILTER_NORMAL_ACCOUNT, (LPBYTE *)&pInfo, // Important: ADDRESS of POINTER sizeof( USER_INFO_2 ) * 100, // requested buffer size; &entriesRead, &totalEntries, &resumeHandle ) ; keepGoing = ( ret == ERROR_MORE_DATA ) ; if ( ret == 0 || ret == ERROR_MORE_DATA ) { DWORD i ; for ( i = 0 ; i < entriesRead ; i++ ) { // Note that strings in the INFO structures // will ALWAYS be Unicode, regardless of // your settings! Even though they're declared // as LPTSTR, they're always LPWSTR. // I'm compiling for non-Unicode, so I // convert them to ANSI strings... // Check for NULL pointers in the INFO structure LPWSTR pName = (LPWSTR)pInfo[ i ].usri2_name ; LPWSTR pComm = (LPWSTR)pInfo[ i ].usri2_comment ; if ( pName == NULL ) { lstrcpy( nameBuf, "(no name!)" ) ; } else if ( lstrlenW( pName ) == 0 ) { lstrcpy( nameBuf, "(empty name!)" ) ; } else { WideCharToMultiByte( CP_ACP, 0, pName, -1, nameBuf, UNLEN, NULL, NULL ) ; } if ( pComm == NULL ) { lstrcpy( commentBuf, "(no comment!)" ) ; } else if ( lstrlenW( pComm ) == 0 ) { lstrcpy( commentBuf, "(empty comment!)" ) ; } else { WideCharToMultiByte( CP_ACP, 0, pComm, -1, commentBuf, MAXCOMMENTSZ, NULL, NULL ) ; } cout << nameBuf << ": " << commentBuf << endl ; } } else { cout << "NetUserEnum error " << ret << endl ; } if ( pInfo ) { NetApiBufferFree( pInfo ) ; pInfo = NULL ; } } } |