Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

Сервис и 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 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.05 c
1-1088292852
Suomi
2004-06-27 03:34
2004.07.11
Инсталляция компонентов


4-1085669490
Raul
2004-05-27 18:51
2004.07.11
кто нибудь подскажите варианты многострочного PopupMenu


1-1088526545
Николай
2004-06-29 20:29
2004.07.11
Получить кусок строки


14-1088052586
Lm
2004-06-24 08:49
2004.07.11
Материнская плата ASUS


1-1088071605
Alek
2004-06-24 14:06
2004.07.11
Изменения в excel ...