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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Событие записи в системный лог http://www.cyberforum.ru/cpp-beginners/thread489243.html
Как можно отловить событие записи в системный лог? Как читать из лога я знаю (ReadEventLog), так что про это писать не надо :) Заранее благодарен.
C++ Где взять описание NMAKE для VC 6 Подскажите, плз, где найти описание nmake для VC 6 очень нужно. http://www.cyberforum.ru/cpp-beginners/thread489157.html
C++ компонент ввода с фильтрацией
Подскажите, кто знает, настраиваемый компонент для ввода по выбору десятичных, шестнадцатиричных чисел, текстовых строк (могут быть и другие форматы) с контролем ввода и желательно подсветкой ошибок ввода (несоответствие заданному формату) на основе напр. TEdit или др. СПАСИБО заранее.
C++ Цветные линии в списке выбора
Мне надо реализовать вываливающийся список (CCombo) для выбора цвета в VC++. Как мне сделать, чтобы он отображал цветные линии, а не слова.
C++ Lookup и пустое поле http://www.cyberforum.ru/cpp-beginners/thread489106.html
v = ZTable1->Lookup('button_id',ii,'2'); if(!VarIsEmpty(v) && !VarIsClear(v) && !VarIsNull(v) && v!=NULL) { hhh = ZTable1->Lookup('button_id',ii,'2').operator int(); } Выскакивает ошибка когда в поле значение пустое или NULL; Неподскажите какой фунцией проверить..?
C++ Что требуется для запуска проекта использующего Crystal Reports на чистой Win2K? Подскажите, какие требуются DLL для запуска проекта(MSVC + ODBC) использующего Print Engine API на машине с чистой win2k? подробнее

Показать сообщение отдельно
bazile
58 / 34 / 19
Регистрация: 15.03.2007
Сообщений: 6,911
21.10.2010, 12:40     Как из службы (сервиса) в Windows 2000 узнать имя пользователя?
Попробуйте так:
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 версии почему-то примера нет, так что ссылку дать не могу.
 
Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru