Форум » [x]Harbour » Доступ к сетевым ресурсам. » Ответить

Доступ к сетевым ресурсам.

Dazzler: Добрый день. Подскажите пожалуйста, есть ли в Harbour функции доступа к сетевым ресурсам под определенной учетной записью? Например: Надо взять файл с ресурса \\serv1\folders2\load.txt Доступ туда имеет учетная запись: user: mdomen\user10 passw: Qazwsx!12

Ответов - 48, стр: 1 2 3 All

AlexMyr: Можно поступить так: c_user := "mdomen\user10" c_pass := "Qazwsx!12" hb_processRun('net use x: \\serv1\folders2 '+c_pass+' /USER:'+c_user) hb_FCopy( "x:\load.txt", "c:\load.txt" ) hb_processRun('net use x: /DEL')

Dazzler: Спасибо!

Andrey: Можно ли получить список доступных сетевых ресурсов из программы ?


Pasha: Поскольку UNC не включает в себя параметры авторизации, сетевой ресурс надо подключать отдельно. Это можно сделать функцией NetRedir() из ct, с подключением сетевого диска. Есть еще функция WNetAddConnection2 из winapi, и она вроде бы работает и без подключения диска. Но для нее надо писать обертку. Получить список ресурсов в сети можно функциями winapi WNetOpenEnum WNetCloseEnum WNetEnumResource. Как это сделать - смотреть примеры в инете. Для харбора кажется оберток для этих функций никто не делал, впрочем, может быть я ошибаюсь, ищите.

LYSK: ! net view > xxx.txt ... ! net view \\srv >yyy.txt ... и разобрать полученные тексты. если знаешь что искать, найти несложно )

Andrey: Спасибо Pasha за обстоятельный ответ ! LYSK пишет: net view > xxx.txt Простое решение, только почему то на 64х-бит висит и не дает ответа...

Dima: Andrey пишет: Простое решение, только почему то на 64х-бит висит и не дает ответа... Проверил на Windows server 2008 64 бита , работает нормик. Не висит.

Andrey: Dima пишет: Проверил на Windows server 2008 64 бита , работает нормик. Не висит. А как тогда снять повисшую программу: net view > xxx.txt через 2 минуты, если не откликается ?

Dima: Andrey CTRL+C 2 минуты это очень долго , либо сеть у тебя огромная либо лаги в сети. у меня в сети 50 компов и net view задумывается не более чем на 3-5 секунд

Andrey: Dima пишет: 2 минуты это очень долго , либо сеть у тебя огромная либо лаги в сети. Согласен. А вдруг у юзера тоже такое вылезет ? Вот я и спрашиваю как снять процесс, если нет отклика 2 минуты ? hb_processRun('net view > xxx.txt') .......

Dima: Andrey пишет: Вот я и спрашиваю как снять процесс Посмотри тему может поможет http://forums.fivetechsupport.com/viewtopic.php?f=3&t=27079

PSP: Andrey странно, что зависает.

AlexMyr: Andrey пишет: Вот я и спрашиваю как снять процесс, если нет отклика 2 минуты ? hb_processRun('net view > xxx.txt' Откуда уверенность что висит, в списке процессов показывает что 'не отвечает'? Какой результат будет в cmd, возможно какая-то станция долго обрабатывает запрос. У меня есть парочка компов которые открываются в сетевом окружении около минуты, лень разбираться, для меня не критично, но проблемы похоже с настройками сети.

Andrey: AlexMyr пишет: Откуда уверенность что висит, в списке процессов показывает что 'не отвечает'? Какой результат будет в cmd, возможно какая-то станция долго обрабатывает запрос. 3 компа в сети с роутером. Один сильно навороченный, с непонятной сетевой картой. Win8 64bit. 5 минут ждал, устал.... Процесс висит и ничего не сообщает. AlexMyr пишет: У меня есть парочка компов которые открываются в сетевом окружении около минуты, лень разбираться, для меня не критично, но проблемы похоже с настройками сети. Вот на такой случай, я и хочу подстраховаться. Я не знаю где и какая будет сетка. Для этого случая и хочу иметь резерв 2-3 минуты и сообщить юзеру, что не могу прочитать эту сетку. Пускай настраивает ручками.

PSP: Andrey пишет: Один сильно навороченный, с непонятной сетевой картой. Win8 64bit. 5 минут ждал, устал.... Процесс висит и ничего не сообщает. Выполни эту команду вручную на этом компе и посмотри, что она выводит.

Dima: Andrey пишет: Вот я и спрашиваю как снять процесс [pre2] FUNCTION KillProceso ( cProceso ) #ifndef __XHARBOUR__ #xcommand TRY => BEGIN SEQUENCE WITH {|e| Break( e )} #xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr-> #endif Local oWMIob, oWMIserver, aProcess, objProcess try oWMIob := CreateObject( "wbemScripting.SwbemLocator" ) catch RETURN nil END oWMIserver := oWMIob:ConnectServer() aProcess :=oWMIserver:ExecQuery( "Select * from Win32_Process" ) For Each objProcess in aProcess IF UPPER(objProcess:Name) = UPPER(cProceso) objProcess:Terminate() ENDIF next RETURN nil [/pre2] Проверил пашет однако и по ходу через WMI можно видимо и список компов получить и не только .

Andrey: Dima пишет: Проверил пашет однако А как проверял ? Dima пишет: по ходу через WMI можно видимо и список компов получить Покажи как ?

Dima: Andrey пишет: А как проверял ? Указал процесс который надо прибить функции KillProceso() Например KillProceso("firefox.exe") Насчет компов не в курсе и много доки курить надо или гуглить

Haz: Dima пишет: по ходу через WMI можно видимо и список компов получить когда то искал, делая инвентаризацию оборудования и софта по сети .... не нашел. Есть только имя по IP. Выкрутился тогда просто сканируя сеть по маске IP от 0 ..255 и составляя список живых Андрей - пример есть в минигуи, а возможные запросы вот: http://msdn.microsoft.com/en-us/library/windows/desktop/aa394585(v=vs.85).aspx

Dima: Haz А не подскажешь как программно убить задачу на определенном компе по IP или имени ? Из CMD это примерно выглядит так Wmic /node:@computers.txt process where (caption=”notepad.exe”) call terminate



полная версия страницы