Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Named pipe


Страницы:   1 2

Чапаев ©   (2006-12-03 13:00:00) 

Можно ли узнать, кто (process identifier) подключился к именованному каналу? Если можно, то как?


vidiv   (2006-12-04 17:45:00) [1]

Удалено модератором
Примечание: Создание пустых сообщений


BiN   (2006-12-04 17:01:00) [2]

... по той простой причине, что в этих случаях создаются новые объекты ядра (имо)


BiN   (2006-12-04 16:59:00) [3]


> Riply ©   (04.12.06 16:23) [19]
>
> Что-то я не понимаю. :(
> Запустила две программы (на одном компьютере). Они законнектились
> при помощи NamedPipe.
> Посмотрела адреса "Пайповых" объектов (QSI)- они различны
> :(
> Может надо учитывать какое-то смещение ?
>

Мда, точно... Наврал я вам -((
С объектами "File","Section" и "Key", такой трюк не пройдет...


Riply   (2006-12-04 16:23:00) [4]

>[17] BiN ©   (04.12.06 10:20)
Спасибо ! Статью нашла.
>а, значит, и адрес объекта должен совпадать
Что-то я не понимаю. :(
Запустила две программы (на одном компьютере). Они законнектились при помощи NamedPipe.
Посмотрела адреса "Пайповых" объектов (QSI)- они различны :(
Может надо учитывать какое-то смещение ?


Eraser   (2006-12-04 15:25:00) [5]

> [16] Чапаев ©   (04.12.06 08:51)

а почему бы программе-клиенту не поднять права до административных? тогда и проблема с коммуникацией решиться и прав больше будет.


BiN   (2006-12-04 10:20:00) [6]


> Riply ©   (03.12.06 23:51) [12]
> А можно подробнее ?
> Просто я считала, что одинаковые поля Object в разных процессах
> могут указывать на
> разные объекты и наоборот, разные на один и тот же.

Object - этот адрес использует диспетчер объектов и драйвера для управления объектом. Тело объекта располагается в верхней части ВАП - выше $80000000. Это пространство обычно разделяется всеми процессами, а, значит, и адрес объекта должен совпадать.

LPC - это один из механизмов IPC, используемый, например, в remote procedure call. LPC также используется для передачи отладочных сообщений и сообщений исключений процессу подсистемы Win32.
Встречал статью на rsdn.ru с примерами.


Чапаев   (2006-12-04 08:51:00) [7]

Вот не знаю... На данный момент если юзер знает правильный логин/пароль комплекса, то он может делать всё, какие бы права он ни имел в системе.


Eraser   (2006-12-04 00:52:00) [8]

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

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


Чапаев   (2006-12-04 00:15:00) [9]

> LPC" - что это такое и где можно посмотреть ?
Local procedure call. У Руссиновича.


Чапаев   (2006-12-03 23:52:00) [10]

LPC для меня -- тёмный лес. QSI -- это QuerySystemInformation()?


Riply   (2006-12-03 23:51:00) [11]

>[11] BiN ©   (03.12.06 22:15)
>можно получить по полю Object
А можно подробнее ?
Просто я считала, что одинаковые поля Object в разных процессах могут указывать на
разные объекты и наоборот, разные на один и тот же.
>[10] BiN ©   (03.12.06 22:00)
"LPC" - что это такое и где можно посмотреть ?


BiN   (2006-12-03 22:15:00) [12]

Кстати, список процессов, открывших тот же объект, что и твой процесс, можно получить по полю Object_ из списка открытых описателей, полученного с помощью QSI(SystemHandleInformationClass..)


BiN   (2006-12-03 22:00:00) [13]

Как вариант могу предложить использовать LPC. Там уже реализована поддержка определения не только процесса, но и потока клиента.


Eraser   (2006-12-03 18:35:00) [14]

> [8] Чапаев ©   (03.12.06 18:14)

кстати хорошая мысль, по крайней мере это даст больше гарантий, чем остальные способы. Тут главное быть уверенным, что запускаешь именно "своего" клиента.


Чапаев   (2006-12-03 18:14:00) [15]

Хм... А если создать anonymous pipe, перенаправить в него клиентский ввод-вывод и общаться с клиентом таким способом?


Eraser   (2006-12-03 16:31:00) [16]

> [6] Чапаев ©   (03.12.06 16:28)

тогда проблемка.. никто не даст гарантии, что данный клиент "свой", т.к. работа ведется на локальной системе и при должном желании можно написать эмулятор такого клиента.


Чапаев   (2006-12-03 16:28:00) [17]

> [5] Eraser ©   (03.12.06 16:26)
Нету, запускается CreateProcessAsUser().


Eraser   (2006-12-03 16:26:00) [18]

> [4] Чапаев ©   (03.12.06 16:23)

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


Чапаев   (2006-12-03 16:23:00) [19]

Добавлю... Клиент запущен из сервиса. Мы всегда знаем, что мы запустили, но непонятно, как определить, кто подключился.


Чапаев   (2006-12-03 16:21:00) [20]

> была 100% гарантия, что это именно "свой" клиент?
Ну в общем да. Не очень хочется изобретать очередной велосипед аутентификации...


> нитификэйшн пакдж
Это уже твои домыслы. ;-)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо