Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Delphi и сети

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 305, средняя оценка - 4.73
Diakon
0 / 0 / 0
Регистрация: 11.02.2009
Сообщений: 5
#1

Как определить IP компьютера в локальной доменной сети - Delphi

11.02.2009, 11:27. Просмотров 38923. Ответов 29
Метки нет (Все метки)

Подскажите, плиз, как можно определить IP компа в домменной сети. Но! Для поиска ip надо использовать не имя компа (например, виндовозная команда ping -a имякомпа не подходит), а логин пользователя под которым он вошел в домен. Т.е. зная доменный логин мне надо найти IP компютера. Кто может подсказать как это сделать?
Заранее спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2009, 11:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как определить IP компьютера в локальной доменной сети (Delphi):

Список процессов компьютера в локальной сети (Delphi+Tree View) - Delphi
Друзья, подскажите. Суть задачи следующая: в компонент TreeView (работаю с этим компонентом недавно) выводится список компьютеров в...

Как узнать свой IP в локальной сети? - Delphi
Как мне узнать свой IP в локалке, не в сети интернет а именно в локалке, что получить типа 192.168.x.x !!!

Как ограничить максимальную пропускную способность в локальной сети? - Delphi
В локалке необходимо ограничить трафик (напр 3 Мб). Или ограничить, как в REGETе максималильную пропускную способность. Как это сделать

Как узнать ip-адрес всех компьютеров в локальной сети? - Delphi
Добрый день ребята! хочу написать на Delphi что бы программа смотрел все компьютере локальная сеть и отображал IP Адрес. На одном написал...

Как открыть файл для чтения/записи по локальной сети на удалённой машине? - Delphi
Проблема следующая. 1. В сети на одном компе есть расшаренная папка с доступом локального пользователя.у компа две подсети A и B и он не...

Как считать время с удаленного компьютера в сети - Delphi
Всем доброго времени суток. У меня такая проблема. Нужно считать время с удаленного компьютера в сети. Знаю IP-адрес этого компьютера. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
violleta
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 100
19.03.2010, 15:03 #2
Меня тоже интересует этот вопрос,так как меня определяют,и я хочу определять-)
0
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
19.03.2010, 15:16 #3
Насколько я помню - в домене есть 2 вещи:
1. Имя компа
2. учетная запись (логин/пароль)

1-е вы можете легко узнать с другого компьютера, а вот чтобы узнать второе - у вас, как минимум, должны быть права администратора, чтобы сходить на сервер и получить от него список учетных записей и их ассоциацию по компьютеру...

Ну.. или троян, который будет при входе на комп в папку "общие доки" пихать файл с логином текущего пользователя .

а вы уже программно, из всей сети их собирать и читать
1
violleta
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 100
19.03.2010, 15:19 #4
Как узнать имя чужого компа?
Я выхожу на один форум,и знаю только НИК пользователя,чей IP меня интересует.
0
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
19.03.2010, 15:22 #5
Цитата Сообщение от violleta Посмотреть сообщение
Как узнать имя чужого компа?
не уверен, но можно программно опросить "сетевое окружение" и получить оттуда список компутеров с их именами
0
violleta
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 100
19.03.2010, 15:23 #6
но меня же вычисляет пользователь
0
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
19.03.2010, 15:23 #7
Винда ведь именно так и делает)
0
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
19.03.2010, 15:27 #8
вот смотрите:
Домен Как определить IP компьютера в локальной доменной сети

а вот компы домена с именами
Как определить IP компьютера в локальной доменной сети

т.е. винда априори их знает и показывает, значит точно есть WinApi команда или процедурка вывода имен компутеров из домена.
1
violleta
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 100
19.03.2010, 15:30 #9
Что мне нужно сделать,чтобы определить,я не понимаю настолько,чтобы воспользоваться этими табличками-)))
0
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
19.03.2010, 15:32 #10
вот что нашел.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Получить список компьютеров, подключенных к сети.
 
Святослав Ушаков
дата публикации 15-05-2000 00:00
Версия для печати 
unit NetUtils;
interface
uses Windows, Classes;
function GetContainerList(ListRoot:PNetResource):TList; Type
  {$H+}
   PNetRes = ^TNetRes;
   TNetRes = Record
             dwScope       : Integer;
             dwType        : Integer;
             dwDisplayType : Integer;
             dwUsage       : Integer;
             LocalName     : String;
             RemoteName    : String;
             Comment       : String;
             Provider      : String;
           End;
  {H-}
 
implementation
uses SysUtils;
 type
 PnetResourceArr = ^TNetResource; {TNetResource - это запись,
                      эквивалентная TNetRes, за исключением того, что
                      вместо типов string там типы PChar. }
 
 function GetContainerList(ListRoot:PNetResource):TList;
{возвращает список сетевых имён с подуровня ListRoot, каждый
элемент списка TList - это PNetRes, где поле RemoteName определяет
соответственно сетевое имя элемента списка. Если ListRoot=nil, то
возвращается самый верхний уровень типа:
1. Microsoft Windows Network
2. Novell Netware Network
Чтобы получить список доменов/рабочих групп сети Microsoft, нужно
вызвать эту функцию второй раз, передав ей в качестве параметра,
соответствующий элемент списка, полученного при первом её вызове.
Чтобы получить список компьютеров домена - вызвать третий раз...}
{Единственное, я не знаю как узнать имя текущего домена.}
Var
  TempRec     : PNetRes;
  Buf         : Pointer;
  Count,
  BufSize,
  Res         : DWORD;
  lphEnum     : THandle;
  p           : PNetResourceArr;
  i           : SmallInt;
  NetworkList : TList;
Begin
  NetworkList := TList.Create;
  Result:=nil;
  BufSize := 8192;
  GetMem(Buf, BufSize);
  Try
    Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER{0}, ListRoot,lphEnum);
    {в результате получаем ссылку lphEnum}
    If Res <> 0 Then Raise Exception(Res);
    Count := $FFFFFFFF; {требуем выдать столько записей в
список, сколько есть}
    Res := WNetEnumResource(lphEnum, Count, Buf, BufSize);
                 {в буфере Buf - списочек
                  в виде массива указателей на структуры типа TNetResourceArr
                  а в Count - число этих структур}
    If Res = ERROR_NO_MORE_ITEMS Then Exit;
    If (Res <> 0) Then Raise Exception(Res);
    P := PNetResourceArr(Buf);
    For I := 0 To Count - 1 Do
    Begin           //Требуется копирование из буфера, так как он
      New(TempRec); //действителен только до следующего  вызова функций группы
WNet
      TempRec^.dwScope := P^.dwScope;
      TempRec^.dwType := P^.dwType ;
      TempRec^.dwDisplayType := P^.dwDisplayType ;
      TempRec^.dwUsage := P^.dwUsage ;
      TempRec^.LocalName := StrPas(P^.lpLocalName);  {имеются  ввиду вот эти указатели}
      TempRec^.RemoteName := StrPas(P^.lpRemoteName); {в смысле  - строки PChar}
      TempRec^.Comment := StrPas(P^.lpComment);
      TempRec^.Provider := StrPas(P^.lpProvider);
      NetworkList.Add(TempRec);
      Inc(P);
    End;
    Res := WNetCloseEnum(lphEnum);
    {а следующий вызов - вот он!}
    If Res <> 0 Then Raise Exception(Res);
    Result:=NetWorkList;
    Finally
      FreeMem(Buf);
  End;
End;
end.
 
Пример:
 
uses NetUtils;
var
 List:TList;
begin
 List:=TList.Create;
 List:=GetContainerList(nil); // Получили список сетей.
                             //  Как правило первая - сеть Microsoft
 List:=GetContainerList(List[0]); //Получаем список доменов сети
 for i:=0 to List.Count-1 do
   if PNetRes(List[i])^.RemoteName='YourDomain' then
     begin
     List:=GetContainerList(List[i]);
     Break;
     end;
 // теперь в List - список включённых компьютеров
 // в домене/рабочей группе YourDomain. Каждый элемент списка имеет
 // тип PNetRes. Само имя компьютера можно получить List[i])^.RemoteName
 for i := 0 to List.Count-1 do
  writeln(PNetRes(List[i])^.RemoteName);
end.
(www.delphikingdom.com)

Добавлено через 1 минуту
после того, как вы определили нужный вам компьютер (можно узнать его IP) вам без прав администратора - никуды..
1
violleta
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 100
19.03.2010, 15:34 #11
Без прав админа того форума,где мне известен Ник,или без прав моего компа?
Простите если вопрос нелепый-)))
0
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
19.03.2010, 15:40 #12
Каждый пользователь домена получает определенные права.
Например - на использование уже установленных программ права есть, а на установку новых - прав нет.

Вам нужны права доступа к базе домена (там хранятся Имя компьютера, его IP и список пользователей этого компьютера (их может быть и не 1)) или, если у вас есть права администратора, - вы можете с эмулировать подключение к удаленному рабочему столу КАЖДОГО компьютера, пока не найдете компьютер, на котором сейчас активен нужный пользователь. Потом просто ping имя этого компа в сети
0
violleta
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 100
19.03.2010, 15:43 #13
Цитата Сообщение от Андрей Борисови Посмотреть сообщение
Каждый пользователь домена получает определенные права.
Например - на использование уже установленных программ права есть, а на установку новых - прав нет.

Вам нужны права доступа к базе домена (там хранятся Имя компьютера, его IP и список пользователей этого компьютера (их может быть и не 1)) или, если у вас есть права администратора, - вы можете с эмулировать подключение к удаленному рабочему столу КАЖДОГО компьютера, пока не найдете компьютер, на котором сейчас активен нужный пользователь. Потом просто ping имя этого компа в сети
А разве всем пользователям дают такие права?
И кто дает,админ форума?
0
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
19.03.2010, 16:41 #14
Цитата Сообщение от violleta Посмотреть сообщение
права доступа к базе домена
имеет только администратор.
0
violleta
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 100
19.03.2010, 16:43 #15
Да ,но мой Ай-пи определяет простой пользователь,или он это делает с разрешения админов?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2010, 16:43
Привет! Вот еще темы с ответами:

TserverSocket в локальной сети - Delphi
Добрый день. Как с помощью TClientSocket подсоединиться к TserverSocket если сервер находиться в локальной сети у которой есть выход в...

Эмулятор локальной сети - Delphi
Помогите сделать эмулятор локальной сети (аналог Hamachi) с функциями: создание сети (комнаты), вход других участников в эту сеть, ну и...

Защита локальной сети - Delphi
Привет=) Нам дали задание, &quot;создать программу для защиты локальной сети&quot;. Я вообще не поняла, как и каким образом можно защитить сеть,...

Проверить IP в Локальной сети - Delphi
Привет всем, подскажите как мне проверить отзывается ли в локальной сети ПК с заданным IP адресом.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.03.2010, 16:43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru