Форум: "WinAPI";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизNetUserEnum в XP/Win2k3 возвращает пистой буффер Найти похожие ветки
← →
DelphiN! © (2005-12-13 12:30) [0]
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, возвращаемый ею буффер при этом пуст.
В чем дело?
← →
Васяня (2005-12-13 12:38) [1]Где тут на мастерах лежала стотья про мониторинг сети, рекомендую ;)
← →
DelphiN! © (2005-12-13 12:40) [2]
> [1] Васяня (13.12.05 12:38)
На сколько я помню в статье было сделано по такому же принцыпу как и у меня
← →
Васяня (2005-12-13 12:44) [3]
> DelphiN! ©
На сколько я помню этот код отлично работает под XP... может у меня виндовс такой? :)
← →
BiN © (2005-12-13 12:48) [4]
> DelphiN! © (13.12.05 12:30)
Скорее всего у тебя ошибка в Str2Wide.
Ибо ERROR_REM_NOT_LIST
← →
DelphiN! © (2005-12-13 12:53) [5]
> [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:59) [6]Проблема в том, что
The remote computer is not available
.
Проверь работу функции на локальной машине.
← →
DelphiN! © (2005-12-13 13:01) [7]
> [6] BiN © (13.12.05 12:59)
Не работает на win2003 раньше на Win2000, работало
← →
clickmaker © (2005-12-13 13:02) [8]написано же про 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:05) [9]В переменной comp передаю ip адрес, например 198.162.0.90(Адрес моего компьютера win2003 ent.)
← →
BiN © (2005-12-13 13:06) [10]
> clickmaker © (13.12.05 13:02) [8]
>
> попробуй еще 3-м параметром подсунуть FILTER_NORMAL_ACCOUNT
msdn вроде пишет
A value of zero indicates all account types.
← →
BiN © (2005-12-13 13:08) [11]
> DelphiN! © (13.12.05 13:05) [9]
>
> В переменной comp передаю ip адрес, например 198.162.0.90(Адрес
> моего компьютера win2003 ent.)
RPC на целевой машине доступен?
← →
clickmaker © (2005-12-13 13:10) [12]
> DelphiN! © (13.12.05 13:05) [9]
> В переменной comp передаю ip адрес, например 198.162.0.90
не уверен, что под ХР будет по ip работать. Попробуй DNS/Netbios имя компа (\\compname)
← →
DelphiN! © (2005-12-13 13:15) [13]Сильно извеняюсь, код ошибки не 51, а 5, у меня просто фаервол немного погнал ... А так проблемма остается
← →
BiN © (2005-12-13 13:18) [14]
> DelphiN! © (13.12.05 13:15) [13]
>
> Сильно извеняюсь, код ошибки не 51, а 5, у меня просто фаервол
> немного погнал ...
справку читать будешь? раздел remarks
зы.
Причем здесь фаервол?
← →
Rouse_ © (2005-12-13 13:21) [15]А зачем ты prefmaxlen в ноль сбросил? он тебе ноль и выдает. Ставь пятым параметром DWORD(-1)
← →
clickmaker © (2005-12-13 13:21) [16]неплохо бы еще заглядывать в раздел Win32 SDK reference - Numerical List of Error Codes
или вызывать ShowMessage(SysErrorMessage(ErrorCode))
← →
Rouse_ © (2005-12-13 13:25) [17]ЗЫ:
51 = ERROR_REM_NOT_LIST = The remote computer is not available.
5 = ERROR_ACCESS_DENIED
← →
DelphiN! © (2005-12-13 13:29) [18]Всем приношу извинения, переработал :)
Действительно 5 = ERROR_ACCESS_DENIED.
У меня прав небыло :)
← →
Rouse_ © (2005-12-13 13:29) [19]Да, кстати - в NT требуется адрес указателя а не указатель на буфер.
NetUserEnum(Str2Wide(Comp), 1, 0, @lpBuffer, DWORD(-1), EntiesRead,
TotalEntries, ResumeHandle);
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c