Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2015, 10:09   #1
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию получить имя активного пользователя

Здравствуйте господа коллеги !

Вопрос следующий - как получить имя активного пользователя ОС функциями API. Под понятием "активный пользователь ОС" я подразумеваю того пользователя, который вошёл в систему, а не того, который запустил процесс.

п.с процессы могут запускать "от имени" и в таком случае функция getUserName будет выдавать ахинею.

заранее благодарю
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 08.09.2015, 11:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Т.е. ты хочешь узнать какой пользователь открыл сеанс даже если конкретно твоя программа была запущена от имени другого юзера, я угадал?
Ты пробовал кстати getUserName? Она выдавала не то что нужно? или ты думаешь что она слажает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.09.2015, 12:09   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
GetEnvironmentVariable('UserName')
есть шанс, что вернёт залогинившегося юзера, но и подменить это значение легко
GreenWizard вне форума Ответить с цитированием
Старый 08.09.2015, 12:10   #4
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
или ты думаешь что она слажает?
не думаю, а уверен на все 100 что она уже слажала. Если бы "неслажала", этой тебя тут не было бы

Наоборот
Мне нужно чтобы моя программа запускалась от единственного пользователя (например адмиинистратора), а писала в папки с названием пользователя который вошёл в систему.

То есть, нужно узнать кто вошёл через окно Login в Windows, вне зависимости от того как я запускаю свой ЕХЕ.


Код:
GetEnvironmentVariable('UserName')
выдаёт имя прользователя запустившего процесс
так же как и getUsername , так же как и чтение реестра CURRENT_USER, так же как и чтение папки по профилю.
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 08.09.2015 в 12:13.
JUDAS вне форума Ответить с цитированием
Старый 08.09.2015, 12:16   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

getUserName по идее имя пользователя потока, а не того кто сеанс открыл.
Может быть запущено сразу несколько сеансов, все пользователи активны...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.09.2015, 12:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Может среди классов WMI есть подходящий...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.09.2015, 12:22   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Видел еще, что народ ищет кто запустил explorer.exe.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.09.2015, 12:36   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А что значит "слажала"?? Что она выдала и что было в оригинале?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 08.09.2015, 14:38   #9
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Видел еще, что народ ищет кто запустил explorer.exe.
ссылочку можно?

Цитата:
А что значит "слажала"?? Что она выдала и что было в оригинале?
1. Зашёл как пользователь USER1 и работаю как USER1.
2. Стартую ехе файл с единой строкой GetUserName - показывает что работаю как USER1.
3. Закрываю ехе файл
4. Запускаю ехе файл через пункт (см. вложение)
5. Выбираю пользователья ADMIN и ввожу его пароль
В caption светится ADMIN, хотя я сижу в рабочем столе USER1
Вопрос, как получить имя USER1 при запуске через пункт меню, который на картинке.
Благодарю
Изображения
Тип файла: png 9999.png (8.4 Кб, 144 просмотров)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 08.09.2015, 15:02   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

эти функции не лажают, а делают то что должны.

посмотрите через WinStation API
GetProcessWindowStation=>GetUserObj ectInformation(даст SID)=>LookupAccountSid.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно получить имя пользователя, запустившего процесс? Сергей089 Win Api 1 19.01.2014 18:30
Как получить имя пользователя, блокируещего файл ACCuCTEHT Помощь студентам 2 08.02.2013 21:47
Как получить имя текущего пользователя в windows? betirsolt Общие вопросы Delphi 2 30.08.2011 06:27
Получить имя активного дочернего окна в MDI JeyKip Общие вопросы C/C++ 4 05.12.2010 02:59
Как средствами VBA получить доменное имя пользователя? Прохожий Microsoft Office Excel 3 04.10.2008 18:28