• multiflex (13.07.08 14:32) [0]
    Всем приятного времени. Сабж дает мне инфу о имени пользователя (fi3_username, получившего доступ к файлу в структуре _FILE_INFO_3, а также уникальный идентификатор открытого ресурса (fi3_id), а необходимо узнать, какому компьютеру принадлежит этот пользователь. Я конечно могу перечислить сессии через NetSessionEnum, но фактически имя пользователя не всегда однозначно совпадает с именем компьютера и может быть одинаковым. Подскажите пожалуйста как определить соответствие, либо возможно есть какие либо другие апи?? Спасибо.

    ЗЫ. В догонку: на открытие файла из шары можно чтонибудь вроде хука поставить, или события подождать, или придется постоянный опрос производить???
  • multiflex (14.07.08 06:13) [1]
    Жаль что никто так и не смог помочь, спасибо, буду искать помощи в другом месте, может и найду.
  • alexm_hs_ (14.07.08 20:52) [2]
    1. Что-то не совсем понятно, почему вас не устраивает предложенный же вами способ. Вообще-то так и надо делать. Получаете список через NetSessionEnum. Там есть имя пользователя и имя компьютера. Потом получаете список через NetFileEnum. Там есть имя пользователя. Вот по нему и осуществляете связку двух списков. Один нюанс непростой. Иногда бывает что два юзера с одним именем с разных компьютеров начинают открывать файл. Вот тут, что бы не приписать юзерам "лишних" доступов, необходимо использовать информацию из первого списка о времени бездействия и кол-ве открытых ресурсов. В части случаев удавалось разделить "зерна от плевел". Но в части все ж одному из юзеров приписывались лишние открытые файлы. Пробуйте.

    2. Хук не получится. Придется в таймере делать вызов. Советую только до таймера инициализировать эти апишные функции и потом с ними работать. Что б загрузку модуля netapi32.dll часто не производить.
  • multiflex (15.07.08 11:09) [3]
    Все верно, реализовано именно так, но просто хотелось улучшить все это дело просто, вариант то хороший, но когда подключается 3 компа с "администраторами" то обнаружить открытие какого либо файла конкретно тем или иным пользователем нереально. Не сподобились мелкомягкие нормальную библиотеку сделать =( Либо всетаки гдето чтото есть но сие тайна велика.
  • alexm_hs_ (15.07.08 19:54) [4]
    Посмотрите на пару-тройку программ в сети, отслеживающих подключения. У всех одна и та же "болезнь" с подключениями с одного пользователя. Других средств у МС видно нет. Иначе увидели бы реализацию в составе ОС. В МСДН тоже только этот способ описан. Думаю, если был бы другой - его бы описали. Вещь не такая уж и незначительная, что б ее можно было не задокументировать.
  • multiflex (16.07.08 13:19) [5]
    Ага, волен согласиться, везде такая вот чушь =( Ну хорошо, что есть - то есть, куда деваться. Будем эвристикой заниматься - кто когда где и во сколько, тот наверно и тот а не этот...
Есть новые Нет новых   [134432   +20][b:0][p:0]