![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Узнать логин соединения чужого приложения на этой же машине [D7, MSSQL]
Vlad Oshin © (2007-01-22 11:47:00)Т.е., пользователь запустил чужое приложение, залогинился в нем, а оно(чужое приложение) вызывает мой .ехе, мне надо чтоб он(мой *.ехе) знал как залогинились
Все было хорошо, пока отчеты ничего не меняли в БД (коннектился под sysadmin), теперь, кроме отчета, надо чтоб писалось кто этот отчет затребовал.
Vlad Oshin (2007-01-23 17:09:00) [1]
> Вместо одного из них подсовываешь свой, а в нем делаешь
> запись в лог. Сначала параметров, переданных в командной
> строке. Если нет ничего, то дальше думаешь, например, сообщение
> WM_COPYDATA ловишь, опять нет - все сообщения>WM_USER и
> т.д. В общем случае может получиться
уфф ...
Сделал. Нифига.
А чем черт ни шутит - запустил файлмон, регмон...
и в итоге, оказалось, что эти пип-пип-пип данными обменивались через текстовый файл в директории основной программы!
как то так и файл то называется ~data.ask :)
Павел Калугин (2007-01-22 15:24:00) [2]> [7] Vlad Oshin © (22.01.07 14:24)
> боюсь не станут мне говорить как там переается у них...
а они и не должны говорить.
Твое приложение дергают? от и будьте любезны параметрами передать. Иначе - не будет вам счастья
evvcom (2007-01-22 14:57:00) [3]> [11] Vlad Oshin © (22.01.07 14:40)
> У них штук 30 ехе лежит в каталоге для этого дела.
Вместо одного из них подсовываешь свой, а в нем делаешь запись в лог. Сначала параметров, переданных в командной строке. Если нет ничего, то дальше думаешь, например, сообщение WM_COPYDATA ловишь, опять нет - все сообщения>WM_USER и т.д. В общем случае может получиться
> [1] evvcom © (22.01.07 12:12)
> все достаточно сложно.
Ega23 (2007-01-22 14:56:00) [4]
> У меня складывается впечатление, что это у API-шного ADOConnection,
> в делфи-обёртке я этого почему-то не вижу...
> Сейчас смотрю, может в свойствах что не так?
>
Короче, надо TADOConnection.ConnectionObject свойства ковырять
Ega23 (2007-01-22 14:43:00) [5]
> у них прописано, видимо. Всегда показывает потому что
>
У меня складывается впечатление, что это у API-шного ADOConnection, в делфи-обёртке я этого почему-то не вижу...
Сейчас смотрю, может в свойствах что не так?
Vlad Oshin (2007-01-22 14:40:00) [6]
> evvcom © (22.01.07 14:31) [8]
> > [7] Vlad Oshin © (22.01.07 14:24)
> > боюсь не станут мне говорить как там переается у них..
> .
>
> а у них тоже внешние exe запускаются для этого?
да. У них штук 30 ехе лежит в каталоге для этого дела. Иногда присылают новые. Что не устраивает наших - я пишу. Я тебе пытался это в пятницу объяснить :)
> Ega23 © (22.01.07 14:37) [9]
у них прописано, видимо. Всегда показывает потому что
Ega23 (2007-01-22 14:37:00) [7]
> and program_name='та_самая_программа'
Вот эта штука не всегда отработает. Нужно явным образом имя программы указывать в коннекте.
Я сейчас как раз над данным вопросом работаю...
Vlad Oshin (2007-01-22 14:37:00) [8]
> Ega23 © (22.01.07 14:17) [6]
накатал свой просмотрщик баз, очень удобно.
можно пару баз выбрать(с системными таблицами) (надо бы три-четыре поставить было - приходится часто вторую копию запускать :))
Выбираешь базу, там список таблиц, выбираешь таблу, смотришь. можно отредактировать, если уверен :)
парочка мемо для написания запросов, соответственно к той же базе или к другим, в том числе не MS sql
и главное - все максимум за пару часов
evvcom (2007-01-22 14:31:00) [9]> [7] Vlad Oshin © (22.01.07 14:24)
> боюсь не станут мне говорить как там переается у них...
а у них тоже внешние exe запускаются для этого?
Vlad Oshin (2007-01-22 14:24:00) [10]
> кто-то жмет капу и запускается ТВОЕ приложение и лезет в
> базенку под СОБСТВЕННЫМ логином так?
> тогда это, простите, порнография.
именно так :)
а теперь сделаю так:
под правами админа к master
SELECT loginame from sysprocesses where hostname='этотРС' and program_name='та_самая_программа' order by login_time desc
и под правами loginame к нужной базе.
> Если же оба приложения используют подключение с Windows
> Autentification то есть логин в базу идет с данными пользователя
> домена, то тогда suser_sname() спасет.
нет, это не так. Авторизация сервером
Юзеры только утром включают свои компы, потом прыгают от машины к машине.
> иначе - надо из основного приложения в твое передавать логин
> и пароли и с этими данными твое приложение должно лезть
> в базу.
боюсь не станут мне говорить как там переается у них...
Ega23 (2007-01-22 14:17:00) [11]Enterprise Manager -> Server -> Management -> Current Activity -> ProcessInfo
Это то, что master..sysprocesses, посмореть "вживую"
Павел Калугин (2007-01-22 14:15:00) [12]> [0] Vlad Oshin © (22.01.07 11:47)
для текущего логина suser_sname()
но у тебя ситуация веселее, как я понял
в базе тлпа юзеров
кто-то жмет капу и запускается ТВОЕ приложение и лезет в базенку под СОБСТВЕННЫМ логином так?
тогда это, простите, порнография.
Если же оба приложения используют подключение с Windows Autentification то есть логин в базу идет с данными пользователя домена, то тогда suser_sname() спасет.
иначе - надо из основного приложения в твое передавать логин и пароли и с этими данными твое приложение должно лезть в базу.
Vlad Oshin (2007-01-22 13:50:00) [13]
> clickmaker © (22.01.07 13:45) [3]
> Данные о машине можно получить только из master..sysprocesses,
> но пока жив коннект
при первом приближении...а что.. можно и так!
спасибо,
clickmaker (2007-01-22 13:45:00) [14]
> Я просто слышал, что на сервере сохраяется инф-ция о соединениях,
> в том числе о машине
в папке LOG лежат файлы ERRORLOG - ERRORLOG.N, там могут быть записи типа
logon Login succeeded for user 'sa'. Connection: Non-Trusted.
если включен аудит
но данных о машине нет.
Данные о машине можно получить только из master..sysprocesses, но пока жив коннект
Vlad Oshin (2007-01-22 13:18:00) [15]
> evvcom ©
дык было б так - не было б проблем и вопроса...
Свои родные отчеты оно понятно как-то информирует, а как - не понятно.
Я просто слышал, что на сервере сохраяется инф-ция о соединениях, в том числе о машине, и вот если запросить ее и сравнить с текущей машиной, может и получится.
Вопрос тогда такой: Это правда? Как спросить эту инф-цию?
evvcom (2007-01-22 12:12:00) [16]> [0] Vlad Oshin © (22.01.07 11:47)
> а оно(чужое приложение) вызывает мой .ехе
надо, чтобы это чужое приложение умело информировать об этом твое, а твое эту информацию умело понимать. В противном случае все достаточно сложно.