Мне нужно получить сведения, какие именно расшаренные ресурсы на локальной машине открываются удаленно в LAN. «files opened remotely on server». Иными словами, - имеется Server, на нем расшарены ресурсы, например: Installs, Clips, Films, Porn&Girls, Music, Books, Pictures, Foto, Games и т.д. К серверу подключился User1, User2 и User3. Каждый из них куда-то влез и «шарит» соответствующую папку. Мне нужно получить информацию о том, кто и что конкретно шарит? Какую папку открыл и т.д.? Покопавшись в инете, нашел вроде как подходящую функцию NetFileGetInfo Она заполняет структуру FILE_INFO_3 или FILE_INFO_2 в зависимости от параметра Level этой функции. Как я понимаю, мне нужно получить сведение полей: fi3_username, fi3_pathname и еще неплохо бы получить fi3_permissions в структуре FILE_INFO_3. Проблема в том, что мне не хватает знаний грамотно ее воспользоваться, а в инете нет ни одного примера, хотя бы самого захудалого на VB. К сожалению, только теория и то очень скудная. Буду очень благодарен за любую помощь в данном отношении.
Набросал небольшой черновичек...
- Код: Выделить всё
Private Declare Function NetFileGetInfo Lib "Netapi32" _
(ByVal servername As Long, _
ByVal fileid As Long, _
ByVal level As Long, _
ByRef bufptr As Any) As Long
Где: servername = 0& - локальная машина
fileid = 0& - идентификатор файла открытого ресурса, ставлю в данном случае «0».
level = 3 – уровень данных. В данном случае нужно FILE_INFO_3
bufptr – Указатель на адрес буфера, который получает информацию.
Далее сопутствующая информация...
- Код: Выделить всё
Private Declare Sub MoveMemory Lib "kernel32.dll" _
Alias "RtlMoveMemory" ( _
Destination As Any, _
Source As Any, _
ByVal Length As Long)
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_ACCESS_DENIED = 5&
Private Const ERROR_INVALID_LEVEL = 124&
Private Const ERROR_NOT_ENOUGH_MEMORY = 8
Private Type FILE_INFO_3
fi3_id As Long
fi3_permissions As Long
fi3_num_locks As Long
fi3_pathname As Long
fi3_username As Long
End Type
Dim fi3 As FILE_INFO_3
Dim bufptr As Long
Далее вроде так...
Success = NetFileGetInfo(0&, 0&, 3, bufptr)
...и далее уже извлечь из памяти по адресу указателя bufptr. Правильно???
Типа: MoveMemory(ByVal fi3, ByVal bufptr, Len(fi3)) С работой с памятью я не силён...
Но Success все время равен - ERROR_FILE_NOT_FOUND. Даже когда ресурсы открываются удаленно.
Помогите, пожалуйста, разобраться. Как правильно описать параметр bufptr и получить FILE_INFO_3 ???
ВСЕ! Начинайте бить...