Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];

Вниз

Как просканировать доступные ресурсы на сетевой машине?   Найти похожие ветки 

 
wHammer   (2001-11-06 11:43) [0]

Прошу извинения за уже не раз повторяющийся вопрос. Как, зная сетевой путь к машине в локальной сети, просканировать доступные папки/диски на нем? И как можно узнать read only ресурс или нет?


 
Kapusto   (2001-11-06 12:17) [1]

Вот код, производящий полный скан сетки на наличие расшареных ресурсов
запускается как Scan(nil, true)
ЗЫ: Знаю, что можно оптимизировать, но лениво...

procedure TfMain.Scan(res: TNetResource; root: boolean);
var
hEnum: cardinal;
nrResource: array[0..1000] of TNetResource;
dwSize: DWORD;
numEntries: DWORD;
i: DWORD;
dwResult: DWORD;
begin
if root = true then
dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
0, nil, hEnum)
else
dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
0, @res, hEnum);
if dwResult = NO_ERROR then
begin
dwSize := SizeOf(nrResource);
numEntries := $0FFFFFFFF;
if WNetEnumResource(hEnum, numEntries, @nrResource, dwSize) = NO_ERROR then
begin
for i := 0 to numEntries - 1 do
begin
if nrResource[i].dwUsage <> RESOURCEUSAGE_CONNECTABLE then
begin
if nrResource[i].dwDisplayType = RESOURCEDISPLAYTYPE_SERVER then
begin
lbResources.Items.Add(nrResource[i].lpRemoteName);
lbResources.Update;
end;
Scan(nrResource[i], false)
end
else
begin
lbResources.Items.Add(nrResource[i].lpRemoteName);
lbResources.Update;
end;
end;
end;
WNetCloseEnum(hEnum);
end;
end;


 
wHammer   (2001-11-06 12:23) [2]

Сенкс, попробую!


 
wHammer   (2001-11-06 14:12) [3]

to Kapusto ©
??? Sorry, но не получается Scan(nil, true);


 
Kapusto   (2001-11-06 14:27) [4]

угу :)) Это небольшая разминка для мозгов...
var
dummy: TNetResource;
.....
Scan(dummy, true);


 
wHammer   (2001-11-06 14:41) [5]

Ну да, согласен, совсем старый стал, тем более раньше когда-то с помощью аналогичной процедуры писал программку для отслеживания времени работы в сети пользователей, и не вспомнил сразу, вот пень-то. Кстати, с помощью этой процедуры можно узнать и не только пользователей. Но мне нужно немного не то, нужно на одной, уже известной машине проверить доступные ресурсы и узнать read only они или нет.


 
Kapusto   (2001-11-06 15:09) [6]

Насчет Readonly имхо копать надо в сторону NetShareGetInfo, а насчет определенного компа - ну отфильруй полученный результат или заполняй начальный TNetResource вручную....


 
wHammer   (2001-11-08 11:05) [7]

to Kapusto © (06.11.01 15:09)
Sorry, не понял.


 
Kapusto   (2001-11-08 11:11) [8]

Не понял насчет r/o? или насчет выборочного скана?


 
wHammer   (2001-11-08 11:27) [9]

\\СетеваяМашина№1. Здесь, например имеются сетевые папки
a: реально флопи дисковод,
d: реально диск D:,
Temp: реально папка C:\Public\User.
Как мне получить имена:
\\СетеваяМашина№1\a:
\\СетеваяМашина№1\d:
\\СетеваяМашина№1\Temp:

Sorry еще раз, но никак не могу сопоставить TNetResource и эти имена.


 
Kapusto   (2001-11-08 12:28) [10]

Я предлагал использовать код, сканирующий всю сетку, и проверять .lpRemoteName на вхождение \\Сетевая машина№1, если есть, то заносить в список - иначе пропускать...

Либо же, как вариант, протрассировать данный код до момента, когда он найдет в сети данную машину и срисовать, как заполнены в этот момент поля в TNetResource, и в своей проге перед WNetOpenEnum вручную присваивать полям структуры эти значения...


 
wHammer   (2001-11-08 15:03) [11]

Как я понял в TNetResource нас интересует lpRemoteName, но при сканировании это поле пустое, я смогу добраться, например до \\СетеваяМашина№1\Temp, если укажу nrResource[i].lpRemoteName + "\Temp", но как мне узнать о существовании данной папки?


 
Kapusto   (2001-11-08 15:42) [12]

имхо для начала сканирования lpRemoteName = \\СетеваяМашина№1
А далее Enumеруем все ресурсы на данной машине
Варинат для извращенца -
Запускаем на выполнение
net view \\СетеваяМашина№1 > result.txt
и далее анализируем этот файл :)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
3-99878
victor
2001-12-27 07:43
2002.01.31
Подключение к Interbase 4 под SCO Open Server


3-99923
Boo
2001-12-23 21:25
2002.01.31
Transaction log file


3-99858
Genka
2001-12-26 13:38
2002.01.31
ADO в Delphi 6.0


3-99900
Slava
2001-12-27 10:17
2002.01.31
MIDAS, Сервер приложений в виде DLL


1-99973
saviola
2002-01-14 15:35
2002.01.31
Работа с MainMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский