Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: удалённое управление Добавлено: 03.09.07 21:09  

Автор вопроса:  Neco | Web-сайт: neco.pisem.net | ICQ: 247906854 
хотел написать свой аналог радмина с некоторыми наворотами. кто-нибудь может подсказать, как в сессии пользователя, запустить установку программы или ещё какой-либо процесс с правами администратора. в ie6 можно было сделать runas - запустить IE из-под админа, перейти в режим проводника (забив "c:\" в строке адреса) - и нате вам получите админский проводник - там и панель управления была админская и сетевое окружение - в общем, почти всё что надо.
а теперь везде IE7 - там этот трюк не проканывает. или я чего-то не знаю. и вот теперь чтобы какую-нить мелочь сделать надо или через командную строку вывернуться из-под runas'а, чтобы какой-нить reg файл regedit'у отправить на слияние или перелогиниться (что чаще быстрее выходит).
вот и мучаются наши админы. а сейчас радмин пишу - хочется, чтобы это там было, но не знаю как, чтобы удобнее.
кто-нибудь знает, как это делается по-нормальному?
у кого-нибудь есть опыт работы с удалённым помощником? там это как-то решено?
P.S. у кого-нить есть инфа как писать панель инструментов для панели задач?

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 1
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #1
Добавлено: 04.09.07 01:50
В MSDN-e есть примерчик как запустить приложение от имени ДРУГОГО пользователя (там не указан админ, так что те придётся есчё имя АДМИНА выкавыривать из системы).

Ответить

Номер ответа: 2
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #2 Добавлено: 04.09.07 15:16
А вот так! :) © API-Guide
Private Const LOGON_WITH_PROFILE = &H1&
Private Const LOGON_NETCREDENTIALS_ONLY = &H2&
Private Const CREATE_DEFAULT_ERROR_MODE = &H4000000
Private Const CREATE_NEW_CONSOLE = &H10&
Private Const CREATE_NEW_PROCESS_GROUP = &H200&
Private Const CREATE_SEPARATE_WOW_VDM = &H800&
Private Const CREATE_SUSPENDED = &H4&
Private Const CREATE_UNICODE_ENVIRONMENT = &H400&
Private Const ABOVE_NORMAL_PRIORITY_CLASS = &H8000&
Private Const BELOW_NORMAL_PRIORITY_CLASS = &H4000&
Private Const HIGH_PRIORITY_CLASS = &H80&
Private Const IDLE_PRIORITY_CLASS = &H40&
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const REALTIME_PRIORITY_CLASS = &H100&
Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessId As Long
    dwThreadId As Long
End Type
Private Type STARTUPINFO
    cb As Long
    lpReserved As Long
    lpDesktop As Long
    lpTitle As Long
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type
Private Declare Function CreateProcessWithLogon Lib "Advapi32" Alias "CreateProcessWithLogonW" (ByVal lpUsername As Long, ByVal lpDomain As Long, ByVal lpPassword As Long, ByVal dwLogonFlags As Long, ByVal lpApplicationName As Long, ByVal lpCommandLine As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInfo As PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
    Dim lpUsername As String, lpDomain As String, lpPassword As String, lpApplicationName As String
    Dim lpCommandLine As String, lpCurrentDirectory As String
    Dim StartInfo As STARTUPINFO, ProcessInfo As PROCESS_INFORMATION
    lpUsername = "OtherUser"
    lpDomain = ""
    lpPassword = "other_user_password"
    lpApplicationName = "C:\WINNT\NOTEPAD.EXE"
    lpCommandLine = vbNullString 'use the same as lpApplicationName
    lpCurrentDirectory = vbNullString 'use standard directory
    StartInfo.cb = LenB(StartInfo) 'initialize structure
    StartInfo.dwFlags = 0&
    CreateProcessWithLogon StrPtr(lpUsername), StrPtr(lpDomain), StrPtr(lpPassword), LOGON_WITH_PROFILE, StrPtr(lpApplicationName), StrPtr(lpCommandLine), CREATE_DEFAULT_ERROR_MODE Or CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, ByVal 0&, StrPtr(lpCurrentDirectory), StartInfo, ProcessInfo
    CloseHandle ProcessInfo.hThread 'close the handle to the main thread, since we don't use it
    CloseHandle ProcessInfo.hProcess 'close the handle to the process, since we don't use it
    'note that closing the handles of the main thread and the process do not terminate the process
    'unload this application
    Unload Me
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 04.09.07 19:07
как в сессии пользователя, запустить установку программы или ещё какой-либо процесс с правами администратора
Проверить, если нет привилегий админа, предупредить пользователя что они нужны для установки и выйти.

А вообще такое уже написали до тебя...
http://www.yandex.ru/yandsearch?text=VB+Radmin

Ответить

Номер ответа: 4
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #4
Добавлено: 05.09.07 21:06
всё не то. запустить explorer админкой так не получится.

А вообще такое уже написали до тебя...
http://www.yandex.ru/yandsearch?text=VB+Radmin

в примерах на vb видел только снятие скриншотов - тормозилово ужасное, так что в топку.
а разработчики радмина не торопятся делать из программы полноценный помощник для хелпдеска. пользователь не может к примеру помощи попросить посредством того же радмина, чтобы не надо было спрашивать по телефону "а какой у вас ip?" у людей от ip далёких :)

а самому можно сделать так, чтобы пользователь писал заявку, а потом когда ему комп не очень нужен ставил указатель "комп свободен" (или автоматом от бездействия компа это делалось) и админ мог зайти и что-то сделать.
также можно дать юзеру указать тип заявки, чтобы с данной заявкой работал определённый круг людей.
в общем много чего можно туда приделать (начиная с корпоративной аськи), что можно сделать только в своём софте.

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 07.09.07 23:08
радмин вполне законченная штука в плане идеи. Если лепить ещё что-то сверху, получится страшный монстр который никому ненужен. Темболее, долепив к программе функционал, она станет дороже, независимо нужен дополнительный функционал пользователю или нет. Придётся компании выстрадать несколько версий радмина, для скромных, для не очень, и для тех кому нужен полноценный помощник хелпдеска. А всё это время и деньги.

Это первое, а второе, писать самому аналог радмина, всёравно что писать офис или свою ос. Особенно на бейсике :) Я в своё время, когда мне хотелось написать свою ос, офис, радмин, игру итп итд просто пил много пива, а потом желание что-то делать, что-то писать, у меня обычно пропадало. Попробуй, может это и тебе поможет.

Ответить

Номер ответа: 6
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #6
Добавлено: 07.09.07 23:56
не ну ладно ось и офис сравнить, но чтобы радмин с чем-то из них - эт ты погорячился. там достаточно изучить взаимодействие с mirror driver'ом, хуки (в принципе необязательно - клиентское окно ловит всё достаточно хорошо), эмуляцию нажатия клавиш, работу по сети, компрессию (самое, пожалуй, сложное, но в дотнете уже решено, да и библиотек сишных полно) и gdi на самом базовом уровне. неделю полный рабочий день посидеть и можно написать.
на данный момент нет только недели :)

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 08.09.07 01:04
писать самому аналог радмина, всёравно что писать офис или свою ос.

Правильно, потому что давно есть VNC, OpenOffice и FreeBSD

Ответить

Номер ответа: 8
Автор ответа:
 BUMM ®



Вопросов: 8
Ответов: 482
 Профиль | | #8 Добавлено: 08.09.07 13:04
не ну ладно ось и офис сравнить, но чтобы радмин с чем-то из них - эт ты погорячился. там достаточно изучить взаимодействие с mirror driver'ом, хуки (в принципе необязательно - клиентское окно ловит всё достаточно хорошо), эмуляцию нажатия клавиш, работу по сети, компрессию (самое, пожалуй, сложное, но в дотнете уже решено, да и библиотек сишных полно) и gdi на самом базовом уровне. неделю полный рабочий день посидеть и можно написать.
на данный момент нет только недели :)

 Ньюансы есть.
Например циклически передавать скриншот экрана через инет - самоубийство. Прога будет тормозить.
Экран нужно "разбивать" на "сетку" с ячейками примерно в 100х100 пикселей, и на компе клиента отслеживать изменения в этих ячейках и на сервер передавать только ячейки, картинка в которых изменилась.
По этому принципу работает RDP. и другие проги по удаленному админмстрированию.

Ответить

Номер ответа: 9
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #9
Добавлено: 08.09.07 14:30
Ты поиши в интернете RA, VNC, VirtualDectop, WinRA и пр. И к стать, всё это встроено в ввинду. Зачем изабретать велосипед заного :(

Ответить

Номер ответа: 10
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #10
Добавлено: 08.09.07 15:00
А чем вам http://www.vbnet.ru/samples/showgroup.aspx?id=7 - ЭТОТ ППРИМЕР не угодил. Допишите.

Ответить

Номер ответа: 11
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #11
Добавлено: 08.09.07 15:55
Ньюансы есть.

Это всё забота mirror driver'а. Он передаёт invalid'ные области экрана, их и пересылаем.

И к стать, всё это встроено в ввинду

Большинство компов у нас в организации всё ещё на 2000-ной винде. Удалённого помощника там нет. Плюс большинству юзеров довольно затруднительно будет объяснить как им пользоваться. Плюс двум админам на одной (третьей) тачке работать не получится. Плюс после перезагрузки некому будет разрешить удалённое управление. Плюс юзер будет высылать приглашение кому угодно только не тому кому надо (понадобится посредник - оператор). Плюс отсутствие обратной связи - юзер не может отследить состояние его текущей заявки и если ему кажется, что им долго никто не занимается, он шлёт заявку второй раз и потом никому непонятно то ли эта проблема опять появилась, то ли это всё та же проблема - а если оператор запарится и разным людям эту заявку отошлёт вообще потом концов не найдёшь.

Допишите.

Там снятие скришотов. Не тока сетка будет тормозить, а ещё и проц. :)

И вообще, вопрос был в том, как получить админский проводник в сессии пользователя. Если ни у кого нет предложений по существу, то считаю тему закрытой.

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 08.09.07 17:27
Чем не угодил ответ №2? Или ты хочешь без админского пароля? )

Ответить

Номер ответа: 13
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #13
Добавлено: 08.09.07 18:00
попробуй запустить explorer или control с помощью этого кода.
из-под текущего пользователя работает, а из-под другого - нет.

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

Ответить

Номер ответа: 14
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #14 Добавлено: 08.09.07 18:17
попробуй запустить explorer или control с помощью этого кода.

Процесс Explorer.exe не позволяет запускать себя дважды. Убей его и запусти пример.

Ответить

Номер ответа: 15
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #15
Добавлено: 08.09.07 18:46
Процесс Explorer.exe не позволяет запускать себя дважды

позволяет, для этого нужно выставить
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
SeparateProcess
в 1.
но это нафиг не надо, потому как не выход.

мне не принципиально, чтобы это был explorer мне нужно чтобы это было что-то заменяющее его возможности для доступа в панель управления. IE6 подходил идеально, но его теперь нет. IE7 может и можно так отконфигурить, но я не знаю как. TotalCMD в принципе уже решение проблемы (можно положить его в расшареную папку и запускать с удалённых тачек по надобности), но теперь просто хочется разобраться как он это делает и по возможности включить это в свой софт.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам