Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизСервис и GetUserName Найти похожие ветки
← →
stany © (2004-05-28 14:10) [0]как будучи сервисом узнать имя текущего пользователя.
GetUserName не предлагать..
← →
VMcL © (2004-05-28 14:19) [1]Поиск рулит:
http://delphimaster.net/view/4-1083989471/
← →
Clickmaker © (2004-05-28 14:22) [2]Тогда это не текущий. Текущий - тот, под которым пашет сервис.
А интерактивных может быть несколько, например, через терминальные сессии.
В общем случае EnumWindowStations + OpenWindowStation + GetUserObjectInformation
← →
stany © (2004-05-28 14:55) [3]> VMcL © (28.05.04 14:19) [1]
> Поиск рулит:
> http://www.delphima
вопрос повнмательнее читать - рулез, говорил же GetUserName не предлагать ....
> Clickmaker © thanks, дома попробую отъюзать
← →
VMcL © (2004-05-28 14:59) [4]>>stany © (28.05.04 14:55) [3]
Ткни меня носом, где ты увидел GetUserName:interface
type
LUID = record
LowPart: DWORD;
HighPart: Longint;
end;
PLUID = ^LUID;
TOKEN_USER = record
User: SID_AND_ATTRIBUTES;
end;
LSA_UNICODE_STRING = record
Length: WORD;
MaximumLength: WORD;
Buffer: PWideChar;
end;
SECURITY_LOGON_SESSION_DATA = record
Size: DWORD;
LogonId: LUID;
UserName: LSA_UNICODE_STRING;
LogonDomain: LSA_UNICODE_STRING;
AuthenticationPackage: LSA_UNICODE_STRING;
LogonType: DWORD;
Session: DWORD;
Sid: PSID;
LogonTime: LARGE_INTEGER;
LogonServer: LSA_UNICODE_STRING;
DnsDomainName: LSA_UNICODE_STRING;
Upn: LSA_UNICODE_STRING;
end;
PSECURITY_LOGON_SESSION_DATA = ^SECURITY_LOGON_SESSION_DATA;
function LsaEnumerateLogonSessions(LogonSessionCount, LogonSessionList: Pointer): LongInt; stdcall; external "Secur32.dll";
function LsaFreeReturnBuffer(Buffer: Pointer): LongInt; stdcall; external "Secur32.dll";
function LsaGetLogonSessionData(LogonId: PLUID;ppLogonSessionData:PPSECURITY_LOGON_SESSION_DATA): LongInt; stdcall; external "Secur32.dll";
implementation
procedure TForm1.Button1Click(Sender: TObject);
Var Session_count: DWORD;
Buffer, sess_inf: PLUID;
P: PChar;
i: integer;
sess_data: PSECURITY_LOGON_SESSION_DATA;
begin
LsaEnumerateLogonSessions(@session_count,@buffer);
except
if GetLastError<>0 then messagedlg(SYSerrormessage(GetLastError),mtError,[mbOk],0);
end;
P:=PChar(buffer);
try
for i:=0 to session_count-1 do
begin
sess_inf:= PLUID(p + i*SizeOf(LUID));
LsaGetLogonSessionData(sess_inf,@sess_data);
memo1.Lines.Add(WideCharToString(sess_data^.UserName.Buffer));
memo2.Lines.Add(IntToStr(sess_data^.LogonType));
memo3.Lines.Add(WideCharToString(sess_data^.LogonServer.Buffer));
end;
finally
LsaFreeReturnBuffer(sess_data);
LsaFreeReturnBuffer(buffer);
end;
end;
← →
stany © (2004-05-28 15:16) [5]... выше, а этот код перебирает имена возможных сессий логона. Мне же нужен текущий локальный пользователь....
← →
VMcL © (2004-05-28 16:06) [6]>>stany © (28.05.04 15:16) [5]
Если не ошибаюсь, в WinXP "текущий локальный пользователь" может быть не один.
← →
Stany © (2004-05-29 10:36) [7]короче, самый простой (как говориться в лоб) вариант
try
Открытие файла("SysDrive:\UserProfile\user.dat")
except
result:="юзер залогинен"
end
Мож кто-нибудь предложит получше?? ....
← →
Anatoly Podgoretsky © (2004-05-29 13:26) [8]Давай прояснить что такое текущий пользователь, раз уж речь про 2000 и ХР
← →
Stany © (2004-05-31 08:27) [9]> Anatoly Podgoretsky ©
тот который в данный момент топчет клаву и юзает мышь, который при этом умудрился локально залогинится... ;-)
← →
Piter © (2004-05-31 11:09) [10]Stany (31.05.04 08:27) [9]
да , но тебе уже говорили, что в XP поддерживается мультилогинг, то есть могут законнектиться НЕСКОЛЬКО пользователей. Который тебе нужен?
Тем более через службу "Удаленный рабочий стол" могут залогиниться и другие пользователи! И они тоже будут видеть экран, топтать клавиатуру и мышь...
← →
Stany © (2004-05-31 18:49) [11]Удаленный рабочий стол отключен
← →
VMcL © (2004-05-31 22:42) [12]В догонку к >>Piter © (31.05.04 11:09) [10]<<
Плюс еще есть такая вещь, как Terminal Services (на серверных Виндах).
← →
Anatoly Podgoretsky © (2004-05-31 22:51) [13]И не только на серверных, штатная вещь для XP Pro
Не считая телнета.
← →
Stany © (2004-06-01 08:21) [14]Народ, на компе нет ни сетки, ни быстого переключения пользователей... так что количество пользоватей и сложность моего вопроса существенно сокращается... так что предложит кто-нибудь что-то получше
try
Открытие файла("UserProfile\user.dat")
except
result:="юзер залогинен"
end
← →
Игорь Шевченко © (2004-06-01 11:17) [15]
> как будучи сервисом узнать имя текущего пользователя
А смысл ?
← →
Stany © (2004-06-01 11:30) [16]Если нужный пользователь залогинился то можно творить определенные дела ....
← →
BiN © (2004-06-01 11:40) [17]Stany © (01.06.04 11:30) [16]
Если нужный пользователь залогинился то можно творить определенные дела ....
Какие именно?
← →
Дима (2004-06-01 12:34) [18]В переменных окружения есть какой-то параметр, что-то типа USERNAME. Но я сам не пробывал.
← →
Игорь Шевченко © (2004-06-01 12:52) [19]Дима (01.06.04 12:34) [18]
> В переменных окружения есть какой-то параметр, что-то типа
> USERNAME
И не пробывай. Для сервисов другой набор переменных окружения, USERNAME там нету
← →
Stany © (2004-06-01 14:06) [20]> BiN © Какие именно?
Это уже мои дела....
← →
Игорь Шевченко © (2004-06-01 14:25) [21]
> Это уже мои дела....
Тогда парься сам или на хакерские сайты
← →
Stany © (2004-06-01 14:38) [22]мне кроме получения имени пользователя ничего не надо, и выражения типа "парься сам" по поводу не нужных для этого вопросов употреблять не совсем вежливо ...
← →
Игорь Шевченко © (2004-06-01 14:46) [23]Stany © (01.06.04 14:38)
Вроде, дали пример с перебором Logon-сессий - чем-то не устраивает ? Как раз твою задачу "делать некие действия" когда залогинен определенный пользователь, он решает.
Ты извини, но я, например, с подозрением отношусь к подобным словам "делать некие действия, когда вошел определенный пользователь"
← →
stany © (2004-06-01 14:52) [24]> Игорь Шевченко ©
да, ладно проехали ...
так это активные Logon-сессии? Мне кажется что это все возможные..
← →
Игорь Шевченко © (2004-06-01 15:56) [25]
> так это активные Logon-сессии? Мне кажется что это все возможные
Что есть "все возможные" ? Разумеется, активные
← →
stany © (2004-06-02 09:14) [26]да я код почитал только, вчера оттестил - пойдет. Типичный хакерский код с малодокументированными функциями ... Всем спасибо.
← →
BiN © (2004-06-02 09:17) [27]stany © (02.06.04 09:14) [26]
да я код почитал только, вчера оттестил - пойдет. Типичный хакерский код с малодокументированными функциями ... Всем спасибо.
LOL
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.035 c