Конференция "WinAPI" » Имя пользователя
 
  • OlegSkal (07.10.10 18:10) [0]
    Сделал простое описание, чтобы больше людей посетило тему.
    Более конкретное описание задачи.

    Прежде всего хочу заметить, что уделил поиску информации в интернете много времени.
    Насмотрелся в интернете много разного, поэтому чтобы не было лишних комментариев - уточню один нюанс (скорее всего с вашей стороны это покажется глупым):
    В Windows может работать одновременно несколько пользователей (удаленный, вторичный запуск, терминал, программы, запущенные от разных локальных пользователей ...), но только ОДИН пользователь может реально (физически) сидеть за одним компьютером и что-то делать.
    Мне нужно узнать имя учетной записи этого пользователя из программы, которая выполняется на этом же компьютере от имени другого пользователя (например сервис).
    Прошу кусок рабочего кода. Со своей стороны поделюсь информацией накопленной за многие месяцы.

    P.S.
    Нашел код, который узнает имя пользователя, под которым был запущен процесс explorer.exe. В принципе этого вполне достаточно, но хотелось бы узнать или коллективно придумать более правильный способ решения данного вопроса.

    Классная игра слов. Думаю, поймете.
  • Anatoly Podgoretsky © (07.10.10 18:19) [1]
    > OlegSkal  (07.10.2010 18:10:00)  [0]

    Ты даже не учитываешь быстрое переключение пользователей, благодаря
    которому, физических пользователей, вошедших в систему с консоли, может быть
    более одного.
  • Eraser © (07.10.10 20:52) [2]
    >
    >
    > [0] OlegSkal   (07.10.10 18:10)

    скажи, зачем оно?
  • DVM © (07.10.10 22:02) [3]

    > Нашел код, который узнает имя пользователя, под которым
    > был запущен процесс explorer.exe.

    А если у пользователя другая оболочка? Или вообще никакой.
  • Rouse_ © (08.10.10 00:26) [4]

    > Мне нужно узнать имя учетной записи этого пользователя из
    > программы, которая выполняется на этом же компьютере от
    > имени другого пользователя

    Это называется интерактивный десктоп, смотри кто залогинен на нем - будет тебе счастье :)
  • Какой кыашмар (09.10.10 17:15) [5]
    WTS API те в руки.
    WTSGetActiveConsoleSessionId
    WTSQuerySessionInformation(...WTSUserName...)


    > уделил поиску информации в интернете много времени.

    Не делайте мне грустно. Жеш надо суметь не найти
  • 0x00FF00 © (10.10.10 01:10) [6]
    И ведь насколько упростилась бы задача, будь на машине UNIX-подобная система.
    Там, для решения сходной задачи, в консоли достаточно ввести команду из одной буквы:
    [00:16:05 ~]$ w

  • sniknik © (10.10.10 11:09) [7]
    > в консоли достаточно ввести команду из одной буквы:
    у демонов есть консоль? что-то не так в Датском королевстве... ;)

    p.s. вообще разница между линуксом и виндой только в том, что там на все есть консольные утилитки (которые никто не знает все, и незнаешь часто именно те что нужны в данных момент), а тут на все есть сдк/функции (которые никто не знает все, и незнаешь часто именно те что нужны в данных момент).
    т.е. фактически утилитки vs фунткции...
  • sniknik © (10.10.10 11:10) [8]
    > фунткции
    функции
  • DVM © (10.10.10 13:49) [9]

    > ообще разница между линуксом и виндой только в том, что
    > там на все есть консольные утилитки (которые никто не знает
    > все, и незнаешь часто именно те что нужны в данных момент)

    В win консольных утилит поменьше конечно но их тоже немало и точно так же большинство не догадываются о их существовании и об их возможностях.
  • Anatoly Podgoretsky © (10.10.10 15:38) [10]
    > DVM  (10.10.2010 13:49:09)  [9]

    Только "Юникс" утилит свыше 400 штук, не считая чисто виндоусных.
  • sniknik © (10.10.10 19:50) [11]
    да какая разница сколько их в винде если в ней это не "идея фикс".

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

    вот примерно так. после этого понял почему у нас (/??? может не только) сервера "тормозят" на простейших действиях.
    в виндовс такого нет. а там человек(программист! был бы юзер было бы не так странно) искренне недоумевал, какие функции, какие библиотеки, ведь есть же утилитка!
    и главное ничего не скажешь... не настолько хорошо знаю "ту кухню" чтобы "поднимать хай", что неправильно ребята пишут... может там так и надо...
  • DVM © (10.10.10 21:47) [12]

    > sniknik ©   (10.10.10 19:50) [11]

    Тебе линуксоид не того рода попадался, тебе попался админ, а нужен был программист. Да все в тамошних MAN описано и функции работы с сетью и прочее. Разница лишь в том, что нет такой монолитности как в Win и следовательно нет единого описания типа MSDN или PlatfomSDK. Есть прорва библиотек, есть описания к ним, есть ядро.
  • sniknik © (10.10.10 22:40) [13]
    > тебе попался админ, а нужен был программист.
    на должности программиста, но по духу похоже да, админ.

    но вообще это один пример, показательный, но не единственный (и не от одного). да хотя бы вот тут ([6]), что и напомнило . и примеры когда искал находил сделанные один в один по описанному в [11]. почему и сложилось мнение.
  • Игорь Шевченко © (11.10.10 10:46) [14]
    sniknik ©   (10.10.10 19:50) [11]

    Где ты таких берешь ?


    > после этого понял почему у нас (/??? может не только) сервера
    > "тормозят" на простейших действиях.


    потому что руки кривые
  • sniknik © (11.10.10 12:22) [15]
    > Где ты таких берешь ?
    да набрали по объявлениям... целый отдел (кадров) только этим и занимается.

    > потому что руки кривые
    спасибо Кэп...
  • han_malign (11.10.10 17:06) [16]

    > нет единого описания типа MSDN или PlatfomSDK

    - там есть IEEE POSIX, в который помимо прочего входят и сокеты Беркли(к вопросу об IP)...
  • OlegSkal (19.10.10 15:25) [17]
    Вначале все набросились на меня, потом начали "грызтись" между собой.
    Я просил не пустые слова а реальную помощь.
    Если б реально шарил в апи проблему решил бы давным-давно...


    > Anatoly Podgoretsky ©   (07.10.10 18:19) [1]
    > > OlegSkal  (07.10.2010 18:10:00)  [0]
    >
    > Ты даже не учитываешь быстрое переключение пользователей,
    >  благодаря
    > которому, физических пользователей, вошедших в систему с
    > консоли, может быть
    > более одного.

    В вопросе это учитывалось! Вы мне пытаетесь доказать что за одной клавиатурой может работать несколько человек
    Пока не будем учитывать программы для подключению к одному ПК несколько клав и мышей (одновременной работой за одним ПК несколько физических юзеров)


    > Eraser ©   (07.10.10 20:52) [2]
    > >
    > >
    > > [0] OlegSkal   (07.10.10 18:10)
    >
    > скажи, зачем оно?

    Для запуска программы ос службы от имени нужного пользователя (интерактивного пользователя. Активного пользователя, ....)
    rdp, терминал и подобное пока пусть стоит с стороне


    > DVM ©   (07.10.10 22:02) [3]
    >
    > > Нашел код, который узнает имя пользователя, под которым
    >
    > > был запущен процесс explorer.exe.
    >
    > А если у пользователя другая оболочка? Или вообще никакой.
    >

    Учитывается имелся виду сам shell


    > Rouse_ ©   (08.10.10 00:26) [4]
    >
    > > Мне нужно узнать имя учетной записи этого пользователя
    > из
    > > программы, которая выполняется на этом же компьютере от
    >
    > > имени другого пользователя
    >
    > Это называется интерактивный десктоп, смотри кто залогинен
    > на нем - будет тебе счастье :)
    >
    > <Цитата>
    > Какой кыашмар   (09.10.10 17:15) [5]
    > WTS API те в руки.
    > WTSGetActiveConsoleSessionId
    > WTSQuerySessionInformation(...WTSUserName...)
    >
    >
    > > уделил поиску информации в интернете много времени.
    >
    > Не делайте мне грустно. Жеш надо суметь не найти

    помогите плиз детальнее (да хоть ссылками конкретными)
  • Palladin © (22.10.10 15:27) [18]

    > помогите плиз детальнее (да хоть ссылками конкретными)

    не ну в конец обнаглели...
    http://www.google.ru/search?client=opera&rls=ru&q=WTSGetActiveConsoleSessionId&sourceid=opera&ie=utf-8&oe=utf-8
 
Конференция "WinAPI" » Имя пользователя
Есть новые Нет новых   [134431   +11][b:0][p:0.001]