Страница: 1 | 2 |
Вопрос: удалённое управление
Добавлено: 03.09.07 21:09
Автор вопроса: Neco | Web-сайт:
хотел написать свой аналог радмина с некоторыми наворотами. кто-нибудь может подсказать, как в сессии пользователя, запустить установку программы или ещё какой-либо процесс с правами администратора. в ie6 можно было сделать runas - запустить IE из-под админа, перейти в режим проводника (забив "c:\" в строке адреса) - и нате вам получите админский проводник - там и панель управления была админская и сетевое окружение - в общем, почти всё что надо.
а теперь везде IE7 - там этот трюк не проканывает. или я чего-то не знаю. и вот теперь чтобы какую-нить мелочь сделать надо или через командную строку вывернуться из-под runas'а, чтобы какой-нить reg файл regedit'у отправить на слияние или перелогиниться (что чаще быстрее выходит).
вот и мучаются наши админы. а сейчас радмин пишу - хочется, чтобы это там было, но не знаю как, чтобы удобнее.
кто-нибудь знает, как это делается по-нормальному?
у кого-нибудь есть опыт работы с удалённым помощником? там это как-то решено?
P.S. у кого-нить есть инфа как писать панель инструментов для панели задач?
Ответы
Всего ответов: 22
Номер ответа: 1
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #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_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-сайт:
Профиль | | #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-сайт:
Профиль | | #6
Добавлено: 07.09.07 23:56
не ну ладно ось и офис сравнить, но чтобы радмин с чем-то из них - эт ты погорячился. там достаточно изучить взаимодействие с mirror driver'ом, хуки (в принципе необязательно - клиентское окно ловит всё достаточно хорошо), эмуляцию нажатия клавиш, работу по сети, компрессию (самое, пожалуй, сложное, но в дотнете уже решено, да и библиотек сишных полно) и gdi на самом базовом уровне. неделю полный рабочий день посидеть и можно написать.
на данный момент нет только недели
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 08.09.07 01:04
Правильно, потому что давно есть VNC, OpenOffice и FreeBSD
Номер ответа: 8
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #8
Добавлено: 08.09.07 13:04
на данный момент нет только недели
Ньюансы есть.
Например циклически передавать скриншот экрана через инет - самоубийство. Прога будет тормозить.
Экран нужно "разбивать" на "сетку" с ячейками примерно в 100х100 пикселей, и на компе клиента отслеживать изменения в этих ячейках и на сервер передавать только ячейки, картинка в которых изменилась.
По этому принципу работает RDP. и другие проги по удаленному админмстрированию.
Номер ответа: 9
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #9
Добавлено: 08.09.07 14:30
Ты поиши в интернете RA, VNC, VirtualDectop, WinRA и пр. И к стать, всё это встроено в ввинду. Зачем изабретать велосипед заного
Номер ответа: 10
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #10
Добавлено: 08.09.07 15:00
А чем вам http://www.vbnet.ru/samples/showgroup.aspx?id=7 - ЭТОТ ППРИМЕР не угодил. Допишите.
Номер ответа: 11
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #13
Добавлено: 08.09.07 18:00
попробуй запустить explorer или control с помощью этого кода.
из-под текущего пользователя работает, а из-под другого - нет.
кстати, total умеет делать то, что мне нужно - он заходит в свою панель управления в контексте того пользователя, из-под которого был запущен. осталось только выяснить как он это делает.
Номер ответа: 14
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #14
Добавлено: 08.09.07 18:17
Процесс Explorer.exe не позволяет запускать себя дважды. Убей его и запусти пример.
Номер ответа: 15
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #15
Добавлено: 08.09.07 18:46
позволяет, для этого нужно выставить
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
SeparateProcess
в 1.
но это нафиг не надо, потому как не выход.
мне не принципиально, чтобы это был explorer мне нужно чтобы это было что-то заменяющее его возможности для доступа в панель управления. IE6 подходил идеально, но его теперь нет. IE7 может и можно так отконфигурить, но я не знаю как. TotalCMD в принципе уже решение проблемы (можно положить его в расшареную папку и запускать с удалённых тачек по надобности), но теперь просто хочется разобраться как он это делает и по возможности включить это в свой софт.