Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.033 c
1-1088202560
AndrewVolkov
2004-06-26 02:29
2004.07.11
ListView изменение ширины столбца?


1-1088054215
nick
2004-06-24 09:16
2004.07.11
Как освободить память


3-1086944771
Manfred8
2004-06-11 13:06
2004.07.11
Вопрос по Sql


3-1086933026
Pipl
2004-06-11 09:50
2004.07.11
SQL запрос


8-1082658175
Riant
2004-04-22 22:22
2004.07.11
Flash в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский