Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Как программно узнать имя текущего пользователя?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Как программно узнать имя текущего пользователя?
Имя
Сообщение << Старые топики   Новые топики >>
Как программно узнать имя текущего пользователя? - 2006-02-06 23:11:50   
De}{is

Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
Люди, подскажите пожалуйста, как мне программно узнать имя пользователя, который зарегистрирован на данный момент в сиситеме? Может есть какая-нибудь Api функция для этих целей?

p.s. сам зняю, что вопрос ламерский => в фак и к гоглу не посылать.
Post #: 1
Как программно узнать имя текущего пользователя? - 2006-02-07 21:50:26   
Pupkin-Zade

Сообщений: 9398
Оценки: 1489
Присоединился: 2004-03-10 13:54:16
Declare Function GetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, _
ByRef nSize As Integer) As Integer

Public Function GetUserName() As String
Dim iReturn As Integer
Dim userName As String
userName = New String(CChar(" "), 50)
iReturn = GetUserName(userName, 50)
GetUserName = userName.Substring(0, userName.IndexOf(Chr(0)))
End Function
Post #: 2
Как программно узнать имя текущего пользователя? - 2006-02-08 11:35:11   
De}{is

Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
Вот вот, примерно так я и пишу:

procedure TForm2.FormActivate(Sender: TоЬjесt);
var un:PChar;
k:Cardinal;
begin
getmem(un,128);
GetUserName(un,k);
edit1.Text:=strpas(un);
freemem(un);
end;

Толь вместо имени пользователя в поле появляются какие-то закорючки, причем каждый раз разные… Может я где-то ошибся???
Post #: 3
Как программно узнать имя текущего пользователя? - 2006-03-11 01:39:42   
Tages

Сообщений: 30
Оценки: 0
Присоединился: 2006-03-09 01:02:16
все 4 варианта взял с сайта http://delphiworld.narod.ru. за что и огромное спс

Вариант номер РАС: Как получить имя текущего пользователя?
function GetCurrentUser: string;
var
pwrec: PPasswordRecord;
begin
pwrec := getpwuid(getuid);
Result := pwrec.pw_name;
end;
Post #: 4
Как программно узнать имя текущего пользователя? - 2006-03-11 01:42:54   
Tages

Сообщений: 30
Оценки: 0
Присоединился: 2006-03-09 01:02:16
Вариант номер двас: Как узнать имя пользователя ?
function GetUserFromwindоws: string;
var
UserName : string;
UserNameLen : Dword;
begin
UserNameLen := 255;
SetLength(userName, UserNameLen);
if GetUserName(PChar(UserName), UserNameLen) then
Result := Copy(UserName,1,UserNameLen - 1)
else
Result := 'Unknown';
end;
Post #: 5
Как программно узнать имя текущего пользователя? - 2006-03-11 01:57:26   
Tages

Сообщений: 30
Оценки: 0
Присоединился: 2006-03-09 01:02:16
Вариант номер ТРИСС: Получить имя текущего пользователя
function GetCurrentUserName: string;
const
cnMaxUserNameLen = 254;
var
sUserName: string;
dwUserNameLen: DWORD;
begin
dwUserNameLen := cnMaxUserNameLen - 1;
SetLength(sUserName, cnMaxUserNameLen);
GetUserName(PChar(sUserName), dwUserNameLen);
SetLength(sUserName, dwUserNameLen);
Result := sUserName;
end;

procedure TForm1.Button1Click(Sender: TоЬjесt);
begin
ShowMessage(GetCurrentUserName);
end;
Post #: 6
Как программно узнать имя текущего пользователя? - 2006-03-11 01:59:59   
Tages

Сообщений: 30
Оценки: 0
Присоединился: 2006-03-09 01:02:16
Вариант номер четырисс : Получить имя текущего пользователя
function GetCurrentUserName(var CurrentUserName: string): Boolean;
var
BufferSize: DWORD;
pUser: PChar;
begin
BufferSize := 0;
GetUserName(nil, BufferSize);
pUser := StrAlloc(BufferSize);
try
Result := GetUserName(pUser, BufferSize);
CurrentUserName := StrPas(pUser);
finally
StrDispose(pUser);
end;
end;

procedure TForm1.Button1Click(Sender: TоЬjесt);
var
CurrentUserName: string;
begin
GetCurrentUserName(CurrentUserName);
Label1.Caption := CurrentUserName;
end;

{*********************************************}

{
windоws NT/2000/XP:

The GetUserNameEx function retrieves the name of the user or other
security principal associated with the calling thread.
You can specify the format of the returned name.
If the thread is impersonating a client, GetUserNameEx
returns the name of the client.
}

const
NameUnknown = 0; // Unknown name type.
NameFullyQualifiedDN = 1; // Fully qualified distinguished name
NameSamCompatible = 2; // windоws NT® 4.0 account name
NameDisplay = 3; // A "friendly" display name
NameUniqueId = 6; // GUID string that the IIDFromString function returns
NameCanonical = 7; // Complete canonical name
NameUserPrincipal = 8; // User principal name
NameCanonicalEx = 9;
NameServicePrincipal = 10; // Generalized service principal name
DNSDomainName = 11; // DNS domain name, plus the user name


procedure GetUserNameEx(NameFormat: DWORD;
lpNameBuffer: LPSTR; nSize: PULONG); stdcall;
external 'secur32.dll' Name 'GetUserNameExA';


function LoggedOnUserNameEx(fFormat: DWORD): string;
var
UserName: array[0..250] of char;
Size: DWORD;
begin
Size := 250;
GetUserNameEx(fFormat, @UserName, @Size);
Result := UserName;
end;

procedure TForm1.Button1Click(Sender: TоЬjесt);
begin
Edit1.Text := LoggedOnUserNameEx(NameSamCompatible);
end;
[sm=3.gif][sm=em121.gif][sm=16.gif][sm=11.gif] Удачи…[sm=3.gif]
Post #: 7
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Как программно узнать имя текущего пользователя?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.