![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
NetUserEnum в XP/Win2k3 возвращает пистой буффер [D6]
DelphiN! © (2005-12-13 12:30:00)
var
EntiesRead: DWORD;
TotalEntries: DWORD;
UserInfo: lpUSER_INFO_1;
lpBuffer: Pointer;
ResumeHandle: DWORD;
Counter: Integer;
NetApiStatus: LongWord;
strl: TStringList;
begin
try
strl := TStringList.Create;
ResumeHandle := 0;
repeat
NetApiStatus := NetUserEnum(Str2Wide(Comp), 1, 0, lpBuffer, 0, EntiesRead,
TotalEntries, ResumeHandle);
UserInfo := lpBuffer;
С клиентов Windows 2000 список всех пользователей можно было пулучить без проблемм, сейчас перешли на winXP для клиентов и на Win2k3 для серверов. При этом ф-ия NetUserEnum стала возвращать код 51, возвращаемый ею буффер при этом пуст.
В чем дело?
Rouse_ (2005-12-13 13:29:00) [1]Да, кстати - в NT требуется адрес указателя а не указатель на буфер.
NetUserEnum(Str2Wide(Comp), 1, 0, @lpBuffer, DWORD(-1), EntiesRead,
TotalEntries, ResumeHandle);
DelphiN! (2005-12-13 13:29:00) [2]Всем приношу извинения, переработал :)
Действительно 5 = ERROR_ACCESS_DENIED.
У меня прав небыло :)
Rouse_ (2005-12-13 13:25:00) [3]ЗЫ:
51 = ERROR_REM_NOT_LIST = The remote computer is not available.
5 = ERROR_ACCESS_DENIED
clickmaker (2005-12-13 13:21:00) [4]неплохо бы еще заглядывать в раздел Win32 SDK reference - Numerical List of Error Codes
или вызывать ShowMessage(SysErrorMessage(ErrorCode))
Rouse_ (2005-12-13 13:21:00) [5]А зачем ты prefmaxlen в ноль сбросил? он тебе ноль и выдает. Ставь пятым параметром DWORD(-1)
BiN (2005-12-13 13:18:00) [6]
> DelphiN! © (13.12.05 13:15) [13]
>
> Сильно извеняюсь, код ошибки не 51, а 5, у меня просто фаервол
> немного погнал ...
справку читать будешь? раздел remarks
зы.
Причем здесь фаервол?
DelphiN! (2005-12-13 13:15:00) [7]Сильно извеняюсь, код ошибки не 51, а 5, у меня просто фаервол немного погнал ... А так проблемма остается
clickmaker (2005-12-13 13:10:00) [8]
> DelphiN! © (13.12.05 13:05) [9]
> В переменной comp передаю ip адрес, например 198.162.0.90
не уверен, что под ХР будет по ip работать. Попробуй DNS/Netbios имя компа (\\compname)
BiN (2005-12-13 13:08:00) [9]
> DelphiN! © (13.12.05 13:05) [9]
>
> В переменной comp передаю ip адрес, например 198.162.0.90(Адрес
> моего компьютера win2003 ent.)
RPC на целевой машине доступен?
BiN (2005-12-13 13:06:00) [10]
> clickmaker © (13.12.05 13:02) [8]
>
> попробуй еще 3-м параметром подсунуть FILTER_NORMAL_ACCOUNT
msdn вроде пишет
A value of zero indicates all account types.
DelphiN! (2005-12-13 13:05:00) [11]В переменной comp передаю ip адрес, например 198.162.0.90(Адрес моего компьютера win2003 ent.)
clickmaker (2005-12-13 13:02:00) [12]написано же про 51
"Windows cannot find the network path. Verify that the network path is correct and the destination computer is not busy or turned off"
попробуй еще 3-м параметром подсунуть FILTER_NORMAL_ACCOUNT
DelphiN! (2005-12-13 13:01:00) [13]
> [6] BiN © (13.12.05 12:59)
Не работает на win2003 раньше на Win2000, работало
BiN (2005-12-13 12:59:00) [14]Проблема в том, что
The remote computer is not available.
Проверь работу функции на локальной машине.
DelphiN! (2005-12-13 12:53:00) [15]
> [4] BiN © (13.12.05 12:48)
function Str2Wide(lpStr: String):PWideChar;
var
dwStrlen : Cardinal;
begin
dwStrLen := lstrlen(PChar(lpStr));
GetMem(Result,(dwStrLen+1)*2);
StringToWideChar(lpStr,Result,dwStrLen+1);
end;
Все правильно вроде
BiN (2005-12-13 12:48:00) [16]
> DelphiN! © (13.12.05 12:30)
Скорее всего у тебя ошибка в Str2Wide.
Ибо ERROR_REM_NOT_LIST
Васяня (2005-12-13 12:44:00) [17]
> DelphiN! ©
На сколько я помню этот код отлично работает под XP... может у меня виндовс такой? :)
DelphiN! (2005-12-13 12:40:00) [18]
> [1] Васяня (13.12.05 12:38)
На сколько я помню в статье было сделано по такому же принцыпу как и у меня
Васяня (2005-12-13 12:38:00) [19]Где тут на мастерах лежала стотья про мониторинг сети, рекомендую ;)