Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kuza
0 / 0 / 0
Регистрация: 23.10.2006
Сообщений: 26
#1

Как из службы (сервиса) в Windows 2000 узнать имя пользователя? - C++

20.10.2010, 18:50. Просмотров 981. Ответов 1
Метки нет (Все метки)

Есть проблема:
Как из службы (сервиса) в Windows 2000 узнать имя пользователя?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2010, 18:50     Как из службы (сервиса) в Windows 2000 узнать имя пользователя?
Посмотрите здесь:

C++ Как узнать имя экземпляра класса?
C++ Узнать директорию пользователя
C++ Как узнать имя файла?
как узнать нажатие клавиши было программным или от пользователя C++
C++ Как узнать Handle или PID процесса, зная его имя и класс?
C++ Создание Службы Windows
C++ Как узнать имя текущего пользователя?
C++ Как узнать версию windows и модели видеокарты и саундкарты?
Как узнать имя exe зная его id (WinApi,c++) C++
Как узнать имя запущенного процесса C++
C++ Имя пользователя и спец папки, кодировка
C++ Как узнать имя проекта dll без использования GetModuleFileName?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bazile
58 / 34 / 19
Регистрация: 15.03.2007
Сообщений: 6,911
21.10.2010, 12:40     Как из службы (сервиса) в Windows 2000 узнать имя пользователя? #2
Попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Дескриптор рабочего стола получающим ввод от пользователя
HDESK hUserDesktop = OpenInputDesktop(0, FALSE, MAXIMUM_ALLOWED);
 
//  Определяем необходимый объем памяти для SID пользователя 
DWORD dwSidLength = 0;
GetUserObjectInformation(hUserDesktop, UOI_USER_SID, NULL, 0, &dwSidLength);
 
//  Выделяем память под SID
PSID lpUserSid = (PSID)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSidLength);
GetUserObjectInformation(hUserDesktop, UOI_USER_SID, lpUserSid, dwSidLength, &dwSidLength);
 
// Определяем имя пользователя по SID
LookupAccountSid( ... );
 
HeapFree(lpUserSid);
CloseDesktop(hUserDesktop);
Код я не проверял, это всего лишь идея. Кроме того в него нужно добавить проверку ошибок.

Еще имеет смысл изучить пример к функциям OpenDesktop/OpenInputDesktop в MSDN. К сожалению в online версии почему-то примера нет, так что ссылку дать не могу.
Yandex
Объявления
21.10.2010, 12:40     Как из службы (сервиса) в Windows 2000 узнать имя пользователя?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru