Как извлечь информацию о конкретном открытии ресурса

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Don Leno » 23.02.2019 (Сб) 17:39

Хорошо. Пусть они и подключаются под моей учеткой. Суть узнать кто подключился, а не как!

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ger_kar » 23.02.2019 (Сб) 20:16

Don Leno писал(а):Хорошо. Пусть они и подключаются под моей учеткой. Суть узнать кто подключился, а не как!
Судя по всему суть в непонимании сути доступа к ресурсам в одноранговой сети. В зависимости от настроек безопасности пользователь может отождествляться либо как гость, либо как пользователь учетки, под которой он произвел авторизацию. Если все пользователи авторизуются под твоей учеткой, то имя этого пользователя и будет возвращаться. По идее для каждого пользователя на твоем компьютере должна заводиться отдельная учетная запись, тогда пользователей будет гораздо легче идентифицировать.
Бороться и искать, найти и перепрятать

NashRus
Постоялец
Постоялец
 
Сообщения: 386
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение NashRus » 23.02.2019 (Сб) 20:24

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

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Don Leno » 23.02.2019 (Сб) 20:45

Простите грешного в непонимании))
ger_kar спс за объяснения

Так я не понял, вопрос идентификации решили? Есть готовый исходник???

NashRus
Постоялец
Постоялец
 
Сообщения: 386
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение NashRus » 23.02.2019 (Сб) 20:54

давай так, если ты считаешь себя умным человеком,
ты больше здесь не пишешь,
если нет то на усмотрение модератора.

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 24.02.2019 (Вс) 12:53

Don Leno писал(а):NetFileEnum Video Demonstration.avi
Я так и не смог загрузить видео.

Видимо у вас устарелый браузер?? Попробуйте обновить... Или скачать с другого более современного компьютера.
Насчет проблемы... Нет, вопрос пока остается открытым.

Don Leno писал(а):...предлагаю не пытаться получить имя пользователя, а например IP компа подключенного к тебе в данный момент.
...
2.Как то узнать какие IP подключены к тебе сейчас

Я знаю, как получить и IP и имена подключенных к Серверу клиентов - это не есть проблема. Я могу узнать какие расшаренные папки они у меня открывают - это, как вы убедились, тоже решаемая задача. Проблема в том, чтобы каким-то образом, связать первое со вторым... То есть, узнать НЕ безликое ID клиента, а конкретно... такой-то IP по имени, например, Vasya открыл D:\SuperGirl расшаренный ресурс - вот в этом то и проблема.
А пока я знаю, что на Сервер зашел IP по имени Vasya - что он делает неизвестно! Одновременно с этим кто-то под учетной записью Vova открыл папку ресурса D:\SuperGirl. Кто в данном случае прячется под учеткой Vova - неизвестно! Как связать одно с другим??? Неизвестно! Сложное уравнение получается. :(
Судя по тому, что ответили другие участники обсуждения, за что им большое спасибо, теперь понятно... я насчет учетной записи... действительно, вы правы, они все заходят ко мне под моей "Vova" учетной записью. Как-то сразу об этом не подумал. Поэтому именно Vova и отображается. Спасибо за подсказку. С этим теперь понятно. Но скажите, пожалуйста, есть ли возможность, все же, где-нибудь в бесконечном океане API, получить возможность связать кто и что открывает БЕЗ создания многочисленных списков учетных записей??? Это то, о чем писал уважаемый ger_kar. Ведь на видео... это только пример, а на деле - сеть может быть на тысячи(!) машин. Я могу и не знать всех, кто подключится. Да и представляете: какой будет список учеток на Сервере?! :drunken:

Don Leno писал(а):Мне тем более самому интересна эта тема.

Нас миллионы! :D

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Don Leno » 24.02.2019 (Вс) 15:05

Благодарю за ответ, Vova_2581! Браузер у меня Chrome последней версии не знаю почему не открывается. Да ладно бывает)))

Я знаю, как получить и IP и имена подключенных к Серверу клиентов - это не есть проблема. Я могу узнать какие расшаренные папки они у меня открывают - это, как вы убедились, тоже решаемая задача. Проблема в том, чтобы каким-то образом, связать первое со вторым...

А нельзя их связывать по времени? К примеру во сколько открылась папка и во сколько подключился IP? Это так в качестве предположения... Конечно точность здесь явно хромать будет... Тебе лишь нужно получить время подключения IP и время открытия папки и сравнить. Например:
Для удобства время надо привести в один формат, к примеру время будет в секундах
Код: Выделить всё
TimeIP=413441 ' Это так в качестве примера!
TimeShare=413500
Time=Abs(TimeIP-TimeShare)

Вот здесь правильнее будет узнать насколько велика разница во времени между подключениями. И при какой разнице они будут равны. Надеюсь понятно объяснил.

Если возможно не мог бы ты скинуть свои исходники по определению IP и имени пользователя. Я бы попробовал это дело объединить.

получить возможность связать кто и что открывает БЕЗ создания многочисленных списков учетных записей???


Вот об этом я и твердил всем, но остался непонятым! Я ж и говорю надо получить имя пользователя Программным путем, а не путем создания десятков учеток!

давай так, если ты считаешь себя умным человеком,
ты больше здесь не пишешь,
если нет то на усмотрение модератора.


Не надо говорить что мне делать! Вас всех устроил ваш ответ! Пожалуйста! Но в итоге нет готового решения, которое кстати и ищет Vova_2581!

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 24.02.2019 (Вс) 18:23

Don Leno писал(а):А нельзя их связывать по времени? К примеру во сколько открылась папка и во сколько подключился IP?

К сожалению, так нельзя. Представьте себе, что некто Petia решил зайти на Сервер. На часах, к тому времени было 9.00. И вот, он подключился, но никакой папки пока еще не открыл. Двигая мышкой в сторону папки открытого ресурса он вдруг понимает, что ему срочно нужно сходить на горшочек, и если прямо сейчас он этого не сделает, то очень сильно рискует сходить в туалет прямо на месте. Понимая всю серьезность своего щекотливого положения, Petia, спотыкаясь и перелетая через табуретки, стулья и все, что попадается ему на пути в комнате, срочно летит в кабинет заседаний. Едва успев добежать, Petia, по счастливой случайности, все же успевает не обделаться по дороге, и спокойно провести заседание в спец. кабинете, за чем бежал, как голый в баню. Вернувшись к своему компьютеру, и переведя дыхание с облегчением, он заходит в вожделенную папку на Сервере. На часах к тому времени уже 9.30. Так вот, за эти полчаса, кто угодно может зайти и открыть папку на Сервере. Поэтому четкой связи по времени, что папку ресурса открыл именно Petia, а не Vasya, Kolia и еще 50 User за полчаса, - НЕ будет!
Мне кажется, что решить такую задачу через функции с префиксом Net, видимо, вообще не получится. Тут, возможно, нужен совершенно иной подход. Знать бы какой?

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 24.02.2019 (Вс) 18:31

Don Leno писал(а):Браузер у меня Chrome последней версии не знаю почему не открывается. Да ладно бывает)))

Последняя попытка...
В браузере Chrome в правом верхнем углу (в конце адресной строки... там, где "звездочка" закладок) бывает при посещении сайта появляется некий значок "щит". Если по нему кликнуть, то выкатится сообщение, что браузер заблокировал нежелательные Java (точно не помню, как именно там написано). И он предлагает разблокировать, если вам нужно. Может в этом проблема??? Посмотрите... У меня тоже Chrom и Opera, FireFox, Yandex - везде открывается без проблем. Так что попробуйте... :roll:

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Don Leno » 24.02.2019 (Вс) 19:47

Проблема была не с браузером. Сайт вообще не загружался. Сейчас вдруг полетел как милый! Загрузил видео. Короче я скинул исходник потому, что думал у тебя не получается написать код по NetFileEnum. Терь понятно все работает))) Но все таки попробуй по времени отлавливать. Если есть возможность скинуть мне код для определения IP и тп. Я сам напишу код, а ты уж проверишь его. У меня локалки нет чтоб проверять.

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 25.02.2019 (Пн) 9:41

Don Leno писал(а):Но все таки попробуй по времени отлавливать.
...
Я сам напишу код, а ты уж проверишь его.

Не трате время, этот путь - утопия! Ну что вы будете делать, когда к серверу подключится одновременно, в одно и тоже время, сразу 20 человек. 5 из них откроют папку Game, 10 откроют Films, а остальные вообще ничего не откроют - просто зайдут и выйдут. Будет каша-малаша... Как вы по времени поймете, кто конкретно и что конкретно открыл??? Этот путь неверный! Насчет кода... то пока его в готовом виде еще нет, так что ничего скинуть пока не могу. Просто знаю принцип, как это сделать, но в готовом виде кода еще нет. Как сделаю, то вышлю вам в личку... или тут прямо... посмотрим... Но за предложение помощи в написании кода, спасибо! :)

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 25.02.2019 (Пн) 13:54

Don Leno писал(а):Мне тем более самому интересна эта тема.
Vova_2581 писал(а):Нас миллионы! :D

Вдогонку сказанного...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 13.03.2019 (Ср) 17:58

Господа, возможно я скажу какую-то глупость, но вроде как объекты WMI позволяют это сделать проще, чем ковыряние с API.

Вот пример на VBS, взятый здесь: "https://www.activexperts.com/admin/scripts/wmi/vbscript/0100/"

Код: Выделить всё
On Error Resume Next

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

arrComputers = Array(".")
For Each strComputer In arrComputers
   WScript.Echo
   WScript.Echo "=========================================="
   WScript.Echo "Computer: " & strComputer
   WScript.Echo "=========================================="

   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ConnectionShare", "WQL", _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)

   For Each objItem In colItems
      WScript.Echo "Antecedent: " & objItem.Antecedent
      WScript.Echo "Dependent: " & objItem.Dependent
      WScript.Echo
   Next
Next


Сейчас у себя его протестировал. Если запустить с правами Администратора, то получаю следующую информацию:

Antecedent: \\PC\root\cimv2:Win32_Share.Name="C"
Dependent: \\PC\root\cimv2:Win32_ServerConnection.ComputerName="192.168.0.15",ShareName="C",UserName="Администратор"


Т.е объект имеет и информацию с какого IP адреса подключились и с какой учеткой и какую "шару" открыли.
Я что-то не учитываю ?

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Don Leno » 13.03.2019 (Ср) 18:19

А теперь по подробнее. То есть ты получил инфу об пользователе, который зашел на твой расшаренный ресурс?! Если можно цельный исходник для проверки. Чтобы Vova_2581 мог оттестить, у меня локали нет. Ждемс с нетерпением))

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 13.03.2019 (Ср) 18:30

Додедал так чтобы даже права админа автоматом запрашивались.

Результат:

Изображение
Вложения
ListSharesConnections.zip
(1.16 Кб) Скачиваний: 139
Последний раз редактировалось ALX_2002 14.03.2019 (Чт) 12:27, всего редактировалось 3 раз(а).

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 157
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Sam777e » 13.03.2019 (Ср) 19:34

NashRus писал(а):давай так, если ты считаешь себя умным человеком,
ты больше здесь не пишешь,
если нет то на усмотрение модератора.

+1
Здоровья и удачи

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 14.03.2019 (Чт) 9:52

ALX_2002
Спасибо за WMI код. Я чуть позже проверю, напишу...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 14.03.2019 (Чт) 12:24

Vova_2581, приветствую. Сегодня появилась возможность проверить под XP. Обнаружил "косяк" с проверкой повышенных прав. Исправил. Заодно убедился в работоспособности. Архив обновил.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Don Leno » 14.03.2019 (Чт) 17:34

ALX_2002 Большая вам благодарность!
Я проверил на виртуальной машине WinXP. Зашел на нее и скрипт на XP отработал замечательно!

Не все решается через апи))) Кстати вопрос: а нельзя ли с WMI в VB написать подобный код, чтобы не запускать внешний скрипт?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Хакер » 14.03.2019 (Чт) 18:01

Don Leno писал(а):Не все решается через апи)))

WMI — это тоже API.

Don Leno писал(а):Кстати вопрос: а нельзя ли с WMI в VB написать подобный код, чтобы не запускать внешний скрипт?

WMI это язык что ли, чтобы с него на VB переписывать? WMI это технология.
Код тебе дали на VBScript-е. Практически любой код на VBScript-е автоматически является работоспособным кодом на VB, пусть и не самым оптимальным. Всё станет оптимальнее, если добавить типизацию переменных.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 14.03.2019 (Чт) 19:06

Don Leno писал(а):ALX_2002 Большая вам благодарность!
Я проверил на виртуальной машине WinXP. Зашел на нее и скрипт на XP отработал замечательно!

Не все решается через апи))) Кстати вопрос: а нельзя ли с WMI в VB написать подобный код, чтобы не запускать внешний скрипт?


Как вариант, можно сделать не через позднее связывание, а через раннее (хотя и первое тоже будет работать). Т.е создать новый проект, подключить TLB wbemdisp.tlb.

для x86 системы - %windir%\System32\wbem\wbemdisp.TLB
для x64 системы - %windir%\SysWOW64\wbem\wbemdisp.TLB

Как правильно заметил Хакер, всё станет оптимальнее, если добавить типизацию переменных. Вот я и решил рассмотреть второй вариант тоже.

Причём для нормальной работы примера, опять же надо запустить VB6 с правами администратора. Иначе приложение будет вываливаться с ошибкой отказа в доступе на Win Vista и выше (если UAC включен).

Run-time error '-2147217405 (80041003)'
Automation error


Так что надо либо генерить манифест рядом со скомпилированным приложением, либо перезапускать своё приложение с повышенными правами.

mdlModule.bas
Код: Выделить всё
Dim oSWbemLocator As New WbemScripting.SWbemLocator
Dim oSWbemServices As WbemScripting.SWbemServices
Dim oSWbemObjectSet As WbemScripting.SWbemObjectSet
Dim oSWbemObject As WbemScripting.SWbemObject
Dim oSWbemObjectEx As WbemScripting.SWbemObjectEx

Private Sub Main()
    Set oSWbemServices = oSWbemLocator.ConnectServer(".", "root\cimv2")
    Set oSWbemObjectSet = oSWbemServices.ExecQuery("SELECT * FROM Win32_ConnectionShare", "WQL")
    For Each oSWbemObject In oSWbemObjectSet
        Set oSWbemObjectEx = oSWbemServices.Get(oSWbemObject.Dependent)
        With oSWbemObjectEx
            Debug.Print "ShareName:" & String(2, vbTab) & .ShareName
            Debug.Print "ComputerName:" & vbTab & .ComputerName
            Debug.Print "UserName:" & String(2, vbTab) & .UserName
        End With
    Next
End Sub
Последний раз редактировалось ALX_2002 14.03.2019 (Чт) 19:18, всего редактировалось 1 раз.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Don Leno » 14.03.2019 (Чт) 19:18

Thanx Хакер!
Подключил Tlb через Проект--Ссылки. "Microsoft WMI Scripting Library" (wbemdisp.tlb), скопировал код, закоментил. Типы переменных намерено не правил, кому надо сами отредактируют. Чисто для теста скомпилил и проверил на виртуальной XP. Все отлично работает. Ниже скрин программы и исходник.

Спс ALX_2002, не увидел вашего поста сразу. Насчет прав админа вы правы. Не подскажите насчет манифестов как их делать, я в них Zero.
Вложения
Test.jpg
Test.jpg (21.42 Кб) Просмотров: 3678
WMI_share.rar
(5.6 Кб) Скачиваний: 119

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 14.03.2019 (Чт) 20:27

Don Leno писал(а):Насчет прав админа вы правы. Не подскажите насчет манифестов как их делать, я в них Zero.


Без проблем. ) Вот тут всё рассказано.

https://stackoverflow.com/a/15134803

https://stackoverflow.com/a/4799327

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/c741187a-fc85-4fbb-b18c-8a1d6f10d614/how-to-embed-a-uac-manifest-into-a-legacy-vb6-application?forum=windowscompatibility

В довесок собрал сэмпл проекта с встраиванием манифеста (подходит для заготовки)
Вложения
prjUACTest.zip
(4.73 Кб) Скачиваний: 122

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 15.03.2019 (Пт) 12:24

Погодите... господа. Вы буквально завалили меня кодами, не успеваю разгребать. :D Даже не знаю с чего начать... Наверное, с главного...
Все работает! СПАСИБО, ALX_2002! Я немного по-своему переписал Ваш код, ну это такой себе набросок или скорее черновичок, просто для испытаний. Потом можно доработать. Единственное, что решил добавить получение имени хоста по IP, используя функцию gethostbyaddr для большей идентификации «противника». Правда сказать, она несколько затормаживает весь процесс, но это больше на XP... а вот на Win7 вроде как почти не тормозит. Короче, не так важно... можно и без этого обойтись. Результат получился такой... и код в приложении...
ResultFinal.jpg
ResultFinal.jpg (42.65 Кб) Просмотров: 3652

ResultFinal2.jpg
ResultFinal2.jpg (72.22 Кб) Просмотров: 3652

Использовать класс Win32_ConnectionShare – это было оригинально! :) Есть еще маленький вопросик: скажите, пожалуйста, как Вы докопались до функций подкласса Dependent??? Я имею ввиду
Dependent.ShareName
...ComputerName
...UserName

и т.д. Где Вы взяли развернутую информацию о самом Dependent???
У меня есть программка WMICodeCreator – она ничего подобного не показывает. Может, есть еще какие???

P.S.
А насчет UAC и прочие Админ аккаунты, то у меня все работает под Админ правами и с этим проблем нет. Проверял и на 7-ке, мой код ниже... работает без проблем. Да и если возникнет такая необходимость запустить эту прогу с максимальными правами, то ведь можно просто воспользоваться внутренней командой runas – Вы ее, кстати, используете в своем .vbs-коде. Так вот у нее есть параметр /savecred – можно один раз ввести пароль и дальше программа уже будет запускаться под правами Админа автоматически. Когда-то давно баловался такой фигней, то все работало прекрасно. :)
Вложения
Win32_ConnectionShare.rar
WMI...
(2.57 Кб) Скачиваний: 124

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 15.03.2019 (Пт) 13:27

Vova_2581 писал(а):Есть еще маленький вопросик: скажите, пожалуйста, как Вы докопались до функций подкласса Dependent??? Я имею ввиду
Dependent.ShareName
...ComputerName
...UserName

и т.д. Где Вы взяли развернутую информацию о самом Dependent???
У меня есть программка WMICodeCreator – она ничего подобного не показывает. Может, есть еще какие???


Конечно есть. В Windows существует утилитка wbemtest (можете проверить через Пуск -> Выполнить -> набрать wbemtest). Даже на XP она имеется.

Да и в принципе даже без этой утилитки можно посмотреть необходимую информацию. У объектов коллекции, полученной в результате запроса, есть свойство свойство Path_.
Вот общий вид того, что оно возвращает:
\\HOST_NAME\root\CIMV2:Win32_ConnectionShare.Antecedent="\\\\HOST_NAME\\root\\cimv2:Win32_Share.Name=\"SHARE_NAME\"", Dependent="\\\\HOST_NAME\\root\\cimv2:Win32_ServerConnection.ComputerName=\"REMOTE_HOST_IP\", ShareName=\"SHARE_NAME\",UserName=\"USER_NAME\""


Vova_2581 писал(а):P.S.
А насчет UAC и прочие Админ аккаунты, то у меня все работает под Админ правами и с этим проблем нет. Проверял и на 7-ке, мой код ниже... работает без проблем. Да и если возникнет такая необходимость запустить эту прогу с максимальными правами, то ведь можно просто воспользоваться внутренней командой runas – Вы ее, кстати, используете в своем .vbs-коде. Так вот у нее есть параметр /savecred – можно один раз ввести пароль и дальше программа уже будет запускаться под правами Админа автоматически. Когда-то давно баловался такой фигней, то все работало прекрасно. :)


А у Вас UAC на каком уровне стоит ? По умолчанию или ползунок сдвинут в самый низ ?

P.S Если запускать wbemtest (равно как и другие утилиты для работы с пространством WMI - Win32_ConnectionShare) на ОС с UAC по умолчанию, то их так же потребуется запускать с правами администратора, иначе получим ошибку. Либо надо менять подключение к WMI с локального на удалённое с указанием логина и пароля.

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 15.03.2019 (Пт) 14:05

wbemtest - ага, понял... нашел я такую у себя. Спасибо!
ALX_2002 писал(а):А у Вас UAC на каком уровне стоит ? По умолчанию или ползунок сдвинут в самый низ ?

Да он, кажется, вообще выключен. Как систему поставил, так про UAC он даже не пикал. Там в дистрибутиве уже все до меня отключили, по всей видимости. :roll: Но я в основном сейчас пока на XP...
ALX_2002 писал(а):P.S Если запускать wbemtest (равно как и другие утилиты для работы с пространством WMI - Win32_ConnectionShare) на ОС с UAC по умолчанию, то их так же потребуется запускать с правами администратора, иначе получим ошибку. Либо надо менять подключение к WMI с локального на удалённое с указанием логина и пароля.

Это Вы имеете ввиду SWbemLocator ? Знаем такой... баловались... :)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 15.03.2019 (Пт) 14:46

Vova_2581 писал(а):Да он, кажется, вообще выключен. Как систему поставил, так про UAC он даже не пикал. Там в дистрибутиве уже все до меня отключили, по всей видимости. :roll:

Т.е у Вас чья-то "самопальная" сборка Windows ? Крайне не рекомендую пользоваться такой ОС. Поведение может быть совершенно непредсказуемым. А уж о встроенных зловредах вообще молчу.

Vova_2581 писал(а):Но я в основном сейчас пока на XP...

Хм. 8) А наскальные рисунки в пещере долотом делаете или по старинке острым камнем ? Может пора уже на Win 10 переползти ? 21-ый век на дворе. )

ALX_2002 писал(а):Это Вы имеете ввиду SWbemLocator ? Знаем такой... баловались... :)

Нет. Это я имею в виду именно утилиты, оформленные как полноценное приложение. А SWbemLocator является просто объектом внутри библиотеки wbemdisp.dll. Но правила ограничения доступа распространяются на них в равной мере. Или вы уточняли про способ подключения ?

Кстати запрос для получения имени компа тоже можно перевести на обращение к wmi. Взгляните на функцию GetHostName в коде ниже:
Код: Выделить всё
Dim oSWbemLocator As New WbemScripting.SWbemLocator

Private Sub Main()
    Dim oSWbemServices As WbemScripting.SWbemServices
    Dim oSWbemObjectSet As WbemScripting.SWbemObjectSet
    Dim oSWbemObject As WbemScripting.SWbemObject
    Dim oSWbemObjectEx As WbemScripting.SWbemObjectEx
   
    Set oSWbemServices = oSWbemLocator.ConnectServer(".", "root\cimv2")
    Set oSWbemObjectSet = oSWbemServices.ExecQuery("SELECT * FROM Win32_ConnectionShare")
    For Each oSWbemObject In oSWbemObjectSet
        Set oSWbemObjectEx = oSWbemServices.Get(oSWbemObject.Dependent)
        With oSWbemObjectEx
           
            Debug.Print "ShareName:" & String(2, vbTab) & .ShareName
           
            Debug.Print "IP:" & String(4, vbTab) & .ComputerName
           
            On Error GoTo SkipError:
            Debug.Print "ComputerName:" & vbTab & GetHostName(.ComputerName)
SkipError:
           
            Debug.Print "UserName:" & String(2, vbTab) & .UserName & vbCrLf
        End With
    Next
End Sub

Function GetHostName(ByVal ComputerName As String) As String
    Dim oSWbemServices As WbemScripting.SWbemServices
    Dim oSWbemObject As WbemScripting.SWbemObject
    Set oSWbemServices = oSWbemLocator.ConnectServer(ComputerName, "root\cimv2")
    For Each oSWbemObject In oSWbemServices.ExecQuery("SELECT * FROM Win32_ComputerSystem")
        GetHostName = oSWbemObject.Name
    Next
End Function
Последний раз редактировалось ALX_2002 15.03.2019 (Пт) 17:22, всего редактировалось 3 раз(а).

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Хакер » 15.03.2019 (Пт) 15:38

ALX_2002 писал(а):А наскальные рисунки в пещере долотом делаете или по старинке острым камнем ? Может пора уже на Win 10 переползти ? 21-ый век на дворе. )

Фу быть таким.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение ALX_2002 » 15.03.2019 (Пт) 15:59

[OFFTOP] Хакер, грешно смеяться над "больными" людьми ? :cyclops:

Подстрекательство на holy war detected 8)

Закат эры Windows XP уже давно произошёл.

P.S Ну хотя бы на Win 7 то уже можно переползти :). И вообще, ну можно мне хоть чуток порофлить ? :alien:

Vova_2581
Постоялец
Постоялец
 
Сообщения: 362
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Как извлечь информацию о конкретном открытии ресурса

Сообщение Vova_2581 » 15.03.2019 (Пт) 20:33

ALX_2002 писал(а):Кстати запрос для получения имени компа тоже можно перевести на обращение к wmi. Взгляните на функциюGetHostName в коде ниже:

Ну, Вы просто реально МЕГА ГУРУ по WMI!! Мне такие «выкрутасы» даже не снились!
Еще раз, СПАСИБО! :)

Насчет системы XP и так далее... Да, я знаю, что XP уже давно не поддерживается и потихоньку уходит в «мир иной», но знаете, как бы сказать, - привык к ней. Как-то все проще и понятней. Тут лучше меня на этот счет сказал когда-то известный классик Александр Сергеевич Пушкин: «Привычка свыше нам дана, замена счастию она!». Он, когда-то темным, студеным, зимним вечером, у камина в кресло сел, открыл свой ноутбук, и прямо так и напечатал на клавиатуре... Ну, была у него такая привычка – сидеть за ноутом у камина. :mrgreen:
А 10-ка далеко не всем нравится, кстати! По разным причинам. Поэтому у меня сейчас на компе две(!) системы стоят - XP и Win7. В ближайшей перспективе планирую полностью перейти на 7-ку. Тем более, что не так давно читал: MicroSoft обещают поддерживать 7-ку еще, как минимум 5 лет, до 23-го года. Что будет дальше – неизвестно. Но, будем надеяться на пролонгирование 7-ки. Читал, что эта система сейчас наиболее популярна, несмотря на 10-ку. И MicroSoft это очень сильно бесит. :evil: Но людям виднее... :tongue:

Пред.След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 8

    TopList