Автор | Сообщение |
|
| |
Пост N: 42
Зарегистрирован: 03.02.12
|
|
Отправлено: 21.06.13 09:41. Заголовок: Доступ к сетевым ресурсам.
Добрый день. Подскажите пожалуйста, есть ли в Harbour функции доступа к сетевым ресурсам под определенной учетной записью? Например: Надо взять файл с ресурса \\serv1\folders2\load.txt Доступ туда имеет учетная запись: user: mdomen\user10 passw: Qazwsx!12
|
|
|
Ответов - 48
, стр:
1
2
3
All
[только новые]
|
|
|
| |
Пост N: 886
Зарегистрирован: 11.06.10
|
|
Отправлено: 21.06.13 10:44. Заголовок: Можно поступить так:..
Можно поступить так: 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')
|
|
|
|
| |
Пост N: 43
Зарегистрирован: 03.02.12
|
|
Отправлено: 21.06.13 10:50. Заголовок: Спасибо!..
Спасибо!
|
|
|
|
| постоянный участник
|
Пост N: 2973
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.09.13 18:49. Заголовок: Можно ли получить сп..
Можно ли получить список доступных сетевых ресурсов из программы ?
|
|
|
|
| Администратор
|
Пост N: 2971
Зарегистрирован: 23.05.05
|
|
Отправлено: 03.09.13 09:52. Заголовок: Поскольку UNC не вкл..
Поскольку UNC не включает в себя параметры авторизации, сетевой ресурс надо подключать отдельно. Это можно сделать функцией NetRedir() из ct, с подключением сетевого диска. Есть еще функция WNetAddConnection2 из winapi, и она вроде бы работает и без подключения диска. Но для нее надо писать обертку. Получить список ресурсов в сети можно функциями winapi WNetOpenEnum WNetCloseEnum WNetEnumResource. Как это сделать - смотреть примеры в инете. Для харбора кажется оберток для этих функций никто не делал, впрочем, может быть я ошибаюсь, ищите.
|
|
|
|
| |
Пост N: 66
Зарегистрирован: 17.10.05
|
|
Отправлено: 03.09.13 11:27. Заголовок: ! net view > xxx..
! net view > xxx.txt ... ! net view \\srv >yyy.txt ... и разобрать полученные тексты. если знаешь что искать, найти несложно )
|
|
|
|
| постоянный участник
|
Пост N: 2975
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.09.13 15:38. Заголовок: Спасибо Pasha за обс..
Спасибо Pasha за обстоятельный ответ ! LYSK пишет: Простое решение, только почему то на 64х-бит висит и не дает ответа...
|
|
|
|
| |
Пост N: 3514
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.09.13 15:49. Заголовок: Andrey пишет: Прос..
Andrey пишет: цитата: | Простое решение, только почему то на 64х-бит висит и не дает ответа... |
| Проверил на Windows server 2008 64 бита , работает нормик. Не висит.
|
|
|
|
| постоянный участник
|
Пост N: 2976
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.09.13 16:59. Заголовок: Dima пишет: Провери..
Dima пишет: цитата: | Проверил на Windows server 2008 64 бита , работает нормик. Не висит. |
| А как тогда снять повисшую программу: net view > xxx.txt через 2 минуты, если не откликается ?
|
|
|
|
| |
Пост N: 3515
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.09.13 17:54. Заголовок: Andrey CTRL+C..
Andrey CTRL+C 2 минуты это очень долго , либо сеть у тебя огромная либо лаги в сети. у меня в сети 50 компов и net view задумывается не более чем на 3-5 секунд
|
|
|
|
| постоянный участник
|
Пост N: 2977
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.09.13 18:37. Заголовок: Dima пишет: 2 минут..
Dima пишет: цитата: | 2 минуты это очень долго , либо сеть у тебя огромная либо лаги в сети. |
| Согласен. А вдруг у юзера тоже такое вылезет ? Вот я и спрашиваю как снять процесс, если нет отклика 2 минуты ? hb_processRun('net view > xxx.txt') .......
|
|
|
|
| |
Пост N: 3516
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.09.13 18:43. Заголовок: Andrey пишет: Вот я..
|
|
|
|
|
| постоянный участник
|
Пост N: 923
Зарегистрирован: 27.01.07
|
|
Отправлено: 04.09.13 18:45. Заголовок: Andrey странно, что..
Andrey странно, что зависает.
|
|
|
|
| |
Пост N: 921
Зарегистрирован: 11.06.10
|
|
Отправлено: 04.09.13 20:05. Заголовок: Andrey пишет: Вот я..
Andrey пишет: цитата: | Вот я и спрашиваю как снять процесс, если нет отклика 2 минуты ? hb_processRun('net view > xxx.txt' |
|
Откуда уверенность что висит, в списке процессов показывает что 'не отвечает'? Какой результат будет в cmd, возможно какая-то станция долго обрабатывает запрос. У меня есть парочка компов которые открываются в сетевом окружении около минуты, лень разбираться, для меня не критично, но проблемы похоже с настройками сети.
|
|
|
|
| постоянный участник
|
Пост N: 2978
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.09.13 21:33. Заголовок: AlexMyr пишет: Отку..
AlexMyr пишет: цитата: | Откуда уверенность что висит, в списке процессов показывает что 'не отвечает'? Какой результат будет в cmd, возможно какая-то станция долго обрабатывает запрос. |
| 3 компа в сети с роутером. Один сильно навороченный, с непонятной сетевой картой. Win8 64bit. 5 минут ждал, устал.... Процесс висит и ничего не сообщает. AlexMyr пишет: цитата: | У меня есть парочка компов которые открываются в сетевом окружении около минуты, лень разбираться, для меня не критично, но проблемы похоже с настройками сети. |
| Вот на такой случай, я и хочу подстраховаться. Я не знаю где и какая будет сетка. Для этого случая и хочу иметь резерв 2-3 минуты и сообщить юзеру, что не могу прочитать эту сетку. Пускай настраивает ручками.
|
|
|
|
| постоянный участник
|
Пост N: 924
Зарегистрирован: 27.01.07
|
|
Отправлено: 05.09.13 09:13. Заголовок: Andrey пишет: Один ..
Andrey пишет: цитата: | Один сильно навороченный, с непонятной сетевой картой. Win8 64bit. 5 минут ждал, устал.... Процесс висит и ничего не сообщает. |
| Выполни эту команду вручную на этом компе и посмотри, что она выводит.
|
|
|
|
| |
Пост N: 3517
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.09.13 09:50. Заголовок: Andrey пишет: Вот я..
Andrey пишет: цитата: | Вот я и спрашиваю как снять процесс |
| 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 Проверил пашет однако и по ходу через WMI можно видимо и список компов получить и не только .
|
|
|
|
| постоянный участник
|
Пост N: 2979
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.09.13 13:06. Заголовок: Dima пишет: Провери..
Dima пишет: А как проверял ? Dima пишет: цитата: | по ходу через WMI можно видимо и список компов получить |
| Покажи как ?
|
|
|
|
| |
Пост N: 3519
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.09.13 14:18. Заголовок: Andrey пишет: А как..
Andrey пишет: Указал процесс который надо прибить функции KillProceso() Например KillProceso("firefox.exe") Насчет компов не в курсе и много доки курить надо или гуглить
|
|
|
|
| |
Пост N: 93
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.09.13 14:57. Заголовок: Dima пишет: по ходу..
Dima пишет: цитата: | по ходу через WMI можно видимо и список компов получить |
| когда то искал, делая инвентаризацию оборудования и софта по сети .... не нашел. Есть только имя по IP. Выкрутился тогда просто сканируя сеть по маске IP от 0 ..255 и составляя список живых Андрей - пример есть в минигуи, а возможные запросы вот: http://msdn.microsoft.com/en-us/library/windows/desktop/aa394585(v=vs.85).aspx
|
|
|
|
| |
Пост N: 3521
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.09.13 15:52. Заголовок: Haz А не подскажешь..
Haz А не подскажешь как программно убить задачу на определенном компе по IP или имени ? Из CMD это примерно выглядит так Wmic /node:@computers.txt process where (caption=”notepad.exe”) call terminate
|
|
|
|
| |
Пост N: 265
Зарегистрирован: 08.07.06
|
|
Отправлено: 05.09.13 16:10. Заголовок: Dima пишет: А не по..
Dima пишет: цитата: | А не подскажешь как программно убить задачу на определенном компе по IP или имени ? Из CMD это примерно выглядит так Wmic /node:@computers.txt process where (caption=”notepad.exe”) call terminate |
| А что мешает сделать: RUN("cmd /c Wmic /node:@computers.txt process where (caption=”notepad.exe”) call terminate")
|
|
|
|
|
| |
Пост N: 3522
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.09.13 16:13. Заголовок: Да ни чего не мешает..
Да ни чего не мешает , не люблю такие подходы если возможен нормальный путь , программный. Это примерно тоже самое если вместо функции directory() юзать RUN("dir") с разбором строки.
|
|
|
|
| постоянный участник
|
Пост N: 2981
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.09.13 16:35. Заголовок: Dima пишет: Да ни ч..
Dima пишет: цитата: | Да ни чего не мешает , не люблю такие подходы если возможен нормальный путь , программный. |
| +1
|
|
|
|
| |
Пост N: 94
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.09.13 19:15. Заголовок: Dima пишет: А не по..
Dima пишет: цитата: | А не подскажешь как программно убить задачу на определенном компе по IP или имени ? |
| не пробовал но возможно примерно так 1 подключиться к компу по вми примерно так цеплялся oLocator := CreateObject( "wbemScripting.SwbemLocator" ) oWMI := oLocator:ConnectServer('192.168.0.107',,'domain\user', 'password') 2 получить список процессов 3 убить выбранный PS но остается вопрос с правами на эти действия http://msdn.microsoft.com/en-us/library/windows/desktop/aa394589(v=vs.85).aspx
|
|
|
|
| постоянный участник
|
Пост N: 2984
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.09.13 12:22. Заголовок: Haz Давай пример в ..
Haz Давай пример в студию ! Очень хочется посмотреть !
|
|
|
|
| |
Пост N: 95
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.09.13 12:42. Заголовок: Andrey пишет: Давай..
Andrey пишет: Какой именно ? если для локального компа - Dima привел уже рабочий, если для удаленки - то это параметры в :ConnectServer , примерно такие ( подробнее нужно гуглить "wbemScripting.SwbemLocator" ) oLocator := CreateObject( "wbemScripting.SwbemLocator" ) oWMI := oLocator:ConnectServer( cComputer,'root\CIMV2','cUser', 'cPass') если успешно подключились - Valtype(oWMI) == 'O' , то можно объекту подсунуть любой его разрешенный запрос SELECT * ... PS. Если задачу запускать из под учетки администратора домена ( именно так и делал когда-то ) , то к любому компу в домене легко цепляется без явного указания пользователя, пароля и пространства имен - oWMI := oLocator:ConnectServer(cComputer,,,,,,128)
|
|
|
|
| |
Пост N: 3525
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.13 12:44. Заголовок: Haz Спасибо идею по..
Haz Спасибо идею понял !
|
|
|
|
| |
Пост N: 3526
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.13 15:53. Заголовок: Haz пишет: oWMI := ..
Haz пишет: цитата: | oWMI := oLocator:ConnectServer(cComputer,,,,,,128) |
| Если IP не доступен то вот такая бяка вылазит Error WINOLE/1007 ╤σ≡Γσ≡ RPC φσΣε±≥≤∩σφ. (0x800706BA): SWbemLocator (DOS Error -2147352567) Called from TOLEAUTO:CONNECTSERVER(0) Как бы пролечить ? Средствами WMI можно проверить доступность IP адреса ?
|
|
|
|
| |
Пост N: 96
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.09.13 16:05. Заголовок: По сути успешный ко..
По сути успешный коннект и есть доступность Можно все делать в обработчике ошибок и проверять типы Valtype(oLacator) == 'O' Valtype(oWmi) == 'O' у меня в случае недоступного IP oWMI := oLocator:ConnectServer(cComputer,,,,,,128) просто висит чуть дольше , но не валиться кстати cComputer это можбыть не только адрес но и сетевое имя, может с ним поппробывать
|
|
|
|
| |
Пост N: 3527
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.13 16:09. Заголовок: Haz пишет: oWMI := ..
Haz пишет: цитата: | oWMI := oLocator:ConnectServer(cComputer,,,,,,128 |
| Сделал так try oWMIserver := oWMIob:ConnectServer(cComputer,,,,,,128) catch ? "Bad IP" return END
|
|
|
|
| |
Пост N: 97
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.09.13 16:12. Заголовок: ))) мысли сходятся ..
))) мысли сходятся PS отпишись чего да как потом получится - тоже интересно .
|
|
|
|
|
| |
Пост N: 3528
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.13 16:54. Заголовок: Haz Отписываюсь ;) ..
Haz Отписываюсь ;) Не пашет почему то. Работает только на том компе на котором прога лежит. Указав любой живой IP прога кажет Error Исходник на скорую руку. Вроде должно пахать а не пашет ;) Proc main (...) local apar apar:=hb_aparams() if len(apar)==0 quit endif ListProcIP(apar[1]) return FUNCTION ListProcIP (cip) #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" ) oWMIserver := oWMIob:ConnectServer(cip,,,,,,128) Catch ? "Error" RETURN nil End if Valtype(oWMIserver) == 'O' .and. Valtype(oWMIob) == 'O' aProcess :=oWMIserver:ExecQuery( "Select * from Win32_Process" ) For Each objProcess in aProcess ? objProcess:Name next else ? "Object Error" endif RETURN nil Если вот так Test 127.0.0.1 или Test IP адрес компа на котором эта прога лежит то все работает.
|
|
|
|
| постоянный участник
|
Пост N: 925
Зарегистрирован: 27.01.07
|
|
Отправлено: 06.09.13 17:08. Заголовок: Брандмауэр не рубит ..
Брандмауэр не рубит выход проги в сеть?
|
|
|
|
| |
Пост N: 3529
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.13 17:12. Заголовок: PSP пишет: Брандмау..
PSP пишет: цитата: | Брандмауэр не рубит выход проги в сеть? |
| Нет , выключен он
|
|
|
|
| постоянный участник
|
Пост N: 926
Зарегистрирован: 27.01.07
|
|
Отправлено: 06.09.13 17:21. Заголовок: Тогда, возможно, нед..
|
|
|
|
| |
Пост N: 3530
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.13 17:27. Заголовок: PSP Надо будет проб..
PSP Надо будет пробнуть , хотя думал и так прокатит Haz пишет: цитата: | Если задачу запускать из под учетки администратора домена ( именно так и делал когда-то ) , то к любому компу в домене легко цепляется без явного указания пользователя, пароля и пространства имен - |
|
|
|
|
|
| |
Пост N: 98
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.09.13 18:31. Заголовок: скорее всего в права..
скорее всего в правах доступа засада, года два назад именно так и запускал задачу с сервера под админской учеткой . и без проблем лазил по компам
|
|
|
|
| |
Пост N: 3531
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.13 18:41. Заголовок: Haz Видимо надо коп..
Haz Видимо надо копать в сторону Security_.Privileges.AddAsString
|
|
|
|
| |
Пост N: 99
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.09.13 18:45. Заголовок: видимо , но тут я па..
видимо , но тут я пас ((
|
|
|
|
| |
Пост N: 3532
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.09.13 13:48. Заголовок: При желании можно фу..
При желании можно функцию перевести и на Harbour http://infostart.ru/public/165702/ смотрим "Функция получения информации о сетевом окружении." я было начал но потом работы накидали по самое не хочу ShellApplication := CreateObject("Shell.Application") Network:= ShellApplication:NameSpace(18) EntireNetwork:= Network:Items():Item("EntireNetwork"):GetFolder PS Тоже самое только проще (test.vbs) // проверил работает нормик Set Shell = CreateObject("Shell.Application") 'получение папки "Сетевое окружение" Set objFolder = Shell.NameSpace("::{208D2C60-3AEA-1069-A2D7-08002B30309D}") 'получение папки "Вся сеть" Set objFolder = objFolder.Items().Item("EntireNetwork").GetFolder 'получение папки "Microsoft Windows Network" For Each objItem In objFolder.Items() If objItem.Name = "Microsoft Windows Network" Then Set objFolderNetwork = objItem.GetFolder End If Next 'перебор доменов и рабочих групп For Each objItem In objFolderNetwork.Items() If objItem.IsFolder Then Set objFolder = objItem.GetFolder 'перебор компьютеров For Each objSubItem In objFolder.Items() WScript.Echo objSubItem.Name Next End If Next
|
|
|
|
| |
Пост N: 3533
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.09.13 17:37. Заголовок: Выкроил минутку ;) П..
Выкроил минутку ;) Пробуем в лоб перевести VBScript на Harbour В тексте указал где падает прога и хз почему Proc main local Shell local objFolder local objFolderNetwork local objItem local objSubItem Shell:=CreateObject("Shell.Application") // 'получение папки "Сетевое окружение" objFolder:=Shell:NameSpace("::{208D2C60-3AEA-1069-A2D7-08002B30309D}") // 'получение папки "Вся сеть" objFolder:=objFolder:Items():Item("EntireNetwork"):GetFolder // 'получение папки "Microsoft Windows Network" For Each objItem In objFolder:Items() // а вот тут почему то падает //Error WINOLE/1005 Argument error: __OLEENUMCREATE (DOS Error -2147352573) If objItem:Name == "Microsoft Windows Network" objFolderNetwork:= objItem:GetFolder exit EndIf Next // 'перебор доменов и рабочих групп For Each objItem In objFolderNetwork:Items() If objItem:IsFolder objFolder:=objItem:GetFolder // 'перебор компьютеров For Each objSubItem In objFolder:Items() ? objSubItem:Name Next EndIf Next return
|
|
|
|
|
| постоянный участник
|
Пост N: 2985
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.09.13 21:02. Заголовок: Dima пишет: For Eac..
Dima пишет: цитата: | For Each objItem In objFolder:Items() // а вот тут почему то падает |
| А что будет если получить ? objFolder:Items() хХарбор 1.2.1 падает на строке: // 'получение папки "Вся сеть" objFolder:=objFolder:Items():Item("EntireNetwork"):GetFolder
|
|
|
|
| постоянный участник
|
Пост N: 2986
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.09.13 21:09. Заголовок: Dima пишет: PS Тоже..
Dima пишет: цитата: | PS Тоже самое только проще (test.vbs) // проверил работает нормик |
| Не работает: Win8 32bit
|
|
|
|
| |
Пост N: 3534
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.09.13 21:20. Заголовок: Andrey пишет: Win8 ..
Andrey пишет: я проверял на XP у себя и удаленно тож на XP , работало. Счас чекану на 2008 64 бит удаленно Проверил та же фигня что у тебя.......
|
|
|
|
| постоянный участник
|
Пост N: 2987
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.09.13 21:56. Заголовок: Взял функцию из 1С. ..
Взял функцию из 1С. Язык еще тот... Без вливания не разберешься... Не знаю как перевести части кода (пометил красным цветом) Вот код: Скрытый текст * Translation 1C at Harbour http://clipper.borda.ru #define Функция Function #define КонецФункции Return Nil #define Если IF #define Тогда THEN #define КонецЕсли; ENDIF #define Прервать; EXIT #define Для Каждого FOR #define КонецЦикла; NEXT #define нПП nI #define ---> Добавляйте // Функция получения информации о сетевом окружении. // Возвращает: // Таблица значений со структурой: // №, Домен, Компьютер, IP-адрес, Комментарий. // // Рекомендация: // Перед применением проверить на компьютерах // Windows Management Instrumentation (WMI): // 1. Состояние служб. // 2. Разрешение в брандмауэре. // // Примечание: // 1. WMI - медленнее, PING - быстрее. // 2. WMI - безоконный, PING - с формированием окна. // &НаСервереБезКонтекста Функция NetworkNeighborhood() ТСетевоеОкружение = Новый ТаблицаЗначений; ТСетевоеОкружение.Колонки.Добавить("нПП", ,"№"); ТСетевоеОкружение.Колонки.Добавить("Домен"); ТСетевоеОкружение.Колонки.Добавить("Компьютер"); ТСетевоеОкружение.Колонки.Добавить("IP"); ТСетевоеОкружение.Колонки.Добавить("Комментарий"); Попытка ShellApplication = Новый COMОбъект("Shell.Application"); // Сетевое окружение. Network = ShellApplication.NameSpace(18); // Вся сеть. EntireNetwork = Network.Items().Item("EntireNetwork").GetFolder; Для Каждого EntireNetworkItem ИЗ EntireNetwork.Items() Цикл Если EntireNetworkItem.Name = "Microsoft Windows Network" Тогда MicrosoftWindowsNetwork = EntireNetworkItem.GetFolder; Прервать; КонецЕсли; КонецЦикла; нПП = 0; Для Каждого MicrosoftWindowsNetworkItem ИЗ MicrosoftWindowsNetwork.Items() Цикл // Рабочая группа или Домен. Domain = MicrosoftWindowsNetworkItem.GetFolder; Домен = ВРег(Domain.Title); НоваяСтрока = ТСетевоеОкружение.Добавить(); нПП = нПП+1; НоваяСтрока.нПП = нПП; НоваяСтрока.Домен = Домен; Для Каждого DomainItem ИЗ Domain.Items() Цикл // Компьютер. Компьютер = ВРег(DomainItem.Name); НоваяСтрока = ТСетевоеОкружение.Добавить(); нПП = нПП+1; НоваяСтрока.нПП = нПП; НоваяСтрока.Домен = Домен; НоваяСтрока.Компьютер = Компьютер; Попытка WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" + Компьютер + "\root\cimv2"); // Без вывода окна на экран. IPConfig = WinMGMT.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration where ipenabled = true"); // IP-адреса. Для Каждого IPCFG ИЗ IPConfig Цикл Если ЗначениеЗаполнено(IPCFG.IPAddress) Тогда Для Каждого IP ИЗ IPCFG.IPAddress Цикл НоваяСтрока = ТСетевоеОкружение.Добавить(); нПП = нПП+1; НоваяСтрока.нПП = нПП; НоваяСтрока.Домен = Домен; НоваяСтрока.Компьютер = Компьютер; НоваяСтрока.IP = IP; НоваяСтрока.Комментарий = "WMI"; КонецЦикла; КонецЕсли; КонецЦикла; Исключение Сообщить("Проверьте на компьютере " + Компьютер + " |Windows Management Instrumentation (WMI): |1. Состояние служб, отвечающих за WMI; |2. Разрешение в брандмауэре для WMI."); WshShell = Новый COMОбъект("WScript.Shell"); // Exec - выводит окно на экран. WshExec = WshShell.Exec("ping -n 1 " + Компьютер); TextStream = WshExec.StdOut; // IP-адреса. Пока НЕ TextStream.AtEndOfStream Цикл СтрокаIP = TextStream.ReadLine(); ПозицияСкобкиЛевая = Найти(СтрокаIP, "["); Если ПозицияСкобкиЛевая > 0 Тогда ПозицияСкобкиПравая = Найти(СтрокаIP, "]"); IP = Сред(СтрокаIP, ПозицияСкобкиЛевая+1, ПозицияСкобкиПравая-ПозицияСкобкиЛевая-1); НоваяСтрока = ТСетевоеОкружение.Добавить(); нПП = нПП+1; НоваяСтрока.нПП = нПП; НоваяСтрока.Домен = Домен; НоваяСтрока.Компьютер = Компьютер; НоваяСтрока.IP = IP; НоваяСтрока.Комментарий = "PING"; Прервать; КонецЕсли; КонецЦикла; КонецПопытки; КонецЦикла; КонецЦикла; Исключение КонецПопытки; Возврат ТСетевоеОкружение; КонецФункции
|
|
|
|
|
| |
Пост N: 3535
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.09.13 22:13. Заголовок: Andrey пишет: Взял ..
Andrey пишет: цитата: | Взял функцию из 1С. Язык еще тот... Без вливания не разберешься... |
| Да тут без 100 грамм точно не обойтись кто не готов воспринять язык 1С , мне лично тяжело понять такой текст так как не привык к типа "КонецЦикла" или "КонецФункции"и тд и тп ЗЫ А это жесть "Если ПозицияСкобкиЛевая"
|
|
|
|
| постоянный участник
|
Пост N: 2988
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.09.13 22:21. Заголовок: Dima пишет: А это ж..
Dima пишет: цитата: | А это жесть "Если ПозицияСкобкиЛевая" |
|
|
|
|
|
| постоянный участник
|
Пост N: 927
Зарегистрирован: 27.01.07
|
|
Отправлено: 08.09.13 09:38. Заголовок: Андрей, "ТСетев..
Андрей, "ТСетевоеОкружение" - объект, содержащий таблицу. "Попытка" = "TRY" или "BEGIN SEQUENCE WITH" "Исключение" = "CATCH" или "RECOVER" "ПозицияСкобкиЛевая" - просто переменная.
|
|
|
Ответов - 48
, стр:
1
2
3
All
[только новые]
|
|