Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2012, 10:54   #1
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос NetQueryDisplayInformation: ERROR_ACCESS_DENIED

Рузультат выполнения
Error := NetQueryDisplayInformation(StringTo OleStr(ledControllerName.Text), 2, CurrIndex,
EntriesRequest, PreferredMaximumLength, ReturnedEntryCount, @Info);

равен 5 (ERROR_ACCESS_DENIED).

Код:
//  Данная функция получает информацию о всех рабочих станциях присутствующих в домене
function TfrmDomainInfo.EnumAllWorkStation: Boolean;
var
  Tmp, Info: PNetDisplayMachine;
  I, CurrIndex, EntriesRequest,
  PreferredMaximumLength,
  ReturnedEntryCount: Cardinal;
  Error: DWORD;
begin
  CurrIndex := 0;
  repeat
    Info := nil;
    // NetQueryDisplayInformation возвращает информацию только о 100-а записях
    // для того чтобы получить всю информацию используется третий параметр,
    // передаваемый функции, который определяет с какой записи продолжать
    // вывод информации
    EntriesRequest := 100;
    PreferredMaximumLength := EntriesRequest * SizeOf(TNetDisplayMachine);
    ReturnedEntryCount := 0;
    // Для выполнения функции, в нее нужно передать DNS имя контролера домена
    // (или его IP адрес), с которого мы хочем получить информацию
    // Для получения информации о рабочих станциях используется структура NetDisplayMachine
    // и ее идентификатор 2 (двойка) во втором параметре
    Error := NetQueryDisplayInformation(StringToOleStr(ledControllerName.Text), 2, CurrIndex,
      EntriesRequest, PreferredMaximumLength, ReturnedEntryCount, @Info);
    if Error in [NERR_Success, ERROR_MORE_DATA] then
    try
      Tmp := Info;
      // Выводим информацию которую вернула функция в структуру
      for I := 0 to ReturnedEntryCount - 1 do
      begin
        with lvWorkStation.Items.Add do
        begin
          Caption := Tmp^.usri2_name;          // Имя рабочей станции
          SubItems.Add(Tmp^.usri2_comment);    // Комментарий
          // Запоминаем индекс с которым будем вызывать повторно функцию (если нужно)
          CurrIndex := Tmp^.usri2_next_index;
        end;
        Inc(Tmp);
      end;
    finally
      NetApiBufferFree(Info);
    end;
  // Если результат выполнения функции ERROR_MORE_DATA
  // (т.е. есть еще данные) - вызываем функцию повторно
  until Error in [NERR_Success, ERROR_ACCESS_DENIED];

  Result := Error = NERR_Success;
end;
Запускал в Win7 залогинившись под учеткой Администратора (того, что на Win2003).

Почему денайед?

DelphiXE / Windows 7 SP1 64-bit (guest) / Windows 2003 Standart 32-bit (guest) / VMware-player-4.0.4-744019
Вложения
Тип файла: zip domaininfo_02.zip (96.0 Кб, 6 просмотров)
malor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ERROR_ACCESS_DENIED Д'якон Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 29.01.2008 20:31