Здравствуйте.
Ситуация: программа-сервер ослуживает клиентов, присоединяющихся по некоторому named pipe.
Параметры пользователя, играющего роль клиента в каждом конкретном случае, определить не составляет
труда посредством имперсонации (ОС — Windows NT 4.0).
Проблема: установить имя комьютера, с которого происходит коннект.
Буду благодарен за мысли по этому поводу.
Здравствуйте, alexis77, Вы писали:
A>Здравствуйте. A>Ситуация: программа-сервер ослуживает клиентов, присоединяющихся по некоторому named pipe. A>Параметры пользователя, играющего роль клиента в каждом конкретном случае, определить не составляет A>труда посредством имперсонации (ОС — Windows NT 4.0). A>Проблема: установить имя комьютера, с которого происходит коннект. A>Буду благодарен за мысли по этому поводу.
Не знаю как это будет работать с пайпами, но есть такая команда (под вин2к, но под NT тоже должна быть) 'net'. Запусти ее 'net help' — выведет помощь. Тебя могут заинтересовать ее расширения
'net session' — показывает подключенные сессии к компьютеру.
'net file' — выводить список открытых файлов (насколько я знаю pipe — это файл)
P.S. запускается из командной строки (либо через кнопку "Пуск" — "Выполнить")
Здравствуйте, alexis77, Вы писали:
A>Здравствуйте. A>Ситуация: программа-сервер ослуживает клиентов, присоединяющихся по некоторому named pipe. A>Параметры пользователя, играющего роль клиента в каждом конкретном случае, определить не составляет A>труда посредством имперсонации (ОС — Windows NT 4.0). A>Проблема: установить имя комьютера, с которого происходит коннект. A>Буду благодарен за мысли по этому поводу.
Если программа клиент тоже твоя — то можно вызвать соответствующюю AIP-ху на клиенте и
передать серверу вместе с остальной служебкой
Здравствуйте, Romul, Вы писали:
R>Здравствуйте, alexis77, Вы писали:
A>>...
R>Не знаю как это будет работать с пайпами, но есть такая команда (под вин2к, но под NT тоже должна быть) 'net'. Запусти ее 'net help' — выведет помощь. Тебя могут заинтересовать ее расширения R>'net session' — показывает подключенные сессии к компьютеру. R>'net file' — выводить список открытых файлов (насколько я знаю pipe — это файл)
R>P.S. запускается из командной строки (либо через кнопку "Пуск" — "Выполнить")
Не поможет. Существование команды net для меня не секрет, кроме того, функциональность, аналогичную net session и net file можно обечпечить посредством функций NetSessionEnum, NetFileEnum. Но мало перебрать все сессии и все используемые файлы (а пайпы в том списке точно будут, как ты верно подметил), нужно понять, под какой именно сессией данный клиент работает. Например, в ситуации, когда один и тот же пользователь полез на сервер с нескольких компьютеров (юзеры, конечно, могут быть разные, но работать под одной учетной записью, например, доменной), сессий с требуемым пользователем в качестве главного героя может быть несколько. Как отфильтровать список сессий?
Здравствуйте, Jakop, Вы писали:
J>Здравствуйте, alexis77, Вы писали:
A>>......
J>Если программа клиент тоже твоя — то можно вызвать соответствующюю AIP-ху на клиенте и J>передать серверу вместе с остальной служебкой
В этом-то и проблема — клиент не мой. И вообще ничего моего на клиенте быть не должно.
Я вот подумал — а нельзя ли как-то использовать SID аутентификации клиента (logon session SID)? Посредством имперсонации потока его можно получить, но какую из этого можно извлечь пользу, я не придумал. Может, есть мысли в этом направлении?