Автор | Сообщение |
|
| |
Пост 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: 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
|
|
|
Ответов - 48
, стр:
1
2
3
All
[только новые]
|
|