Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

Named pipe   Найти похожие ветки 

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

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


 
Eraser ©   (2006-12-03 14:11) [1]

на сколько я знаю - нельзя, хотя через ядерные ф-ции может и можно (у Rouse"a пример был вроде).


 
Eraser ©   (2006-12-03 15:28) [2]

> [0] Чапаев ©   (03.12.06 13:00)

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


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

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


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


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

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


 
Eraser ©   (2006-12-03 16:26) [5]

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

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


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

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


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

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

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


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

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


 
Eraser ©   (2006-12-03 18:35) [9]

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

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


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

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


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

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


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

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


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

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


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

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


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

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

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


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

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


 
BiN ©   (2006-12-04 10:20) [17]


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

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

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


 
Eraser ©   (2006-12-04 15:25) [18]

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

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


 
Riply ©   (2006-12-04 16:23) [19]

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


 
BiN ©   (2006-12-04 16:59) [20]


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

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


 
BiN ©   (2006-12-04 17:01) [21]

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


 
vidiv ©   (2006-12-04 17:45) [22]

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



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.043 c
15-1175481818
SerJaNT
2007-04-02 06:43
2007.04.29
Проблема с картой памяти


2-1175775557
leonidus
2007-04-05 16:19
2007.04.29
Глюки с отображением формы


15-1175753648
IMHO
2007-04-05 10:14
2007.04.29
Посоветуйте компонент БД для Delphi


2-1176199265
allucard
2007-04-10 14:01
2007.04.29
Метод Assign класса TPersistent


3-1171270785
<rm>
2007-02-12 11:59
2007.04.29
формирование страницы Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский