Текущий вход в систему
Добавлено: 26 фев 2004, 13:30
А как процесс может определить, под каким логином он запущен?
Код: Выделить всё
#include <windows.h>
#include <lmcons.h>
TCHAR name[UNLEN+1];
DWORD size = sizeof(name);
GetUserName(
name, // name buffer
&size // size of name buffer
);
Ну дык ведь подсказали же - юзай API GetUserName/GetUserNameEx :-)Процесс запускается шедюлером под одним и тем же логином, с одними и теми же привилегиями.
Надо определить, кто на данный момент залогинен локально, и залогинен ли кто-нибудь.
Если в шедулере стоит, что процесс запускается от пользователя "Администратор" , то функция GetUserName() будет всегда возвращать "Администратор", даже если в момент запуска за компьютером залогинен и сидит , например, ВасяПупкин. А помощью GetUserNameEx() я получу что-то типа OurSys\Администратор (в различных форматах) что тоже не годится. Мне надо определить имя залогиненного пользователя, а не пользователя, от которого запускается процесс.Andy писал(а): Ну дык ведь подсказали же - юзай API GetUserName/GetUserNameEx :-)
Код: Выделить всё
#include <windows.h>
#include <lm.h>
#include <iostream>
using namespace std;
int wmain(void)
{
LPWKSTA_USER_INFO_1 pBuf = NULL;
if (NetWkstaUserGetInfo(NULL, 1, (LPBYTE *)&pBuf) == NERR_Success)
{
wcout << L"User:\t" << (LPCWSTR) pBuf->wkui1_username << endl;
wcout << L"Domain:\t" << (LPCWSTR) pBuf->wkui1_logon_domain << endl;
wcout << L"Other Domains:\t" << (LPCWSTR) pBuf->wkui1_oth_domains << endl;
wcout << L"Logon Server:\t" << (LPCWSTR) pBuf->wkui1_logon_server << endl;
NetApiBufferFree(pBuf);
}
return 0;
}
Опять немного не то... надо определить, какому пользователю принадлежит десктоп, и принадлежит ли он кому-нубудь.Тогда используй функцию NetWkstaUserGetInfo. Она возвращает информацию именно о текущем залогиненном пользователе, см. пример:
Absurd, вопрос несколько отклонился от первоначального, однакоОпять немного не то... надо определить, какому пользователю принадлежит десктоп, и принадлежит ли он кому-нубудь.
Более конкретно, процессу 'yyy' надо знать, может ли процесс, запущенный от пользователя 'xxx', рисовать чего-нибудь на экране. Процесс 'yyy' запускается через шедулер от пользователя 'xxx'.