Как программно узнать имя текущего пользователя?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как программно узнать имя текущего пользователя? - 2006-02-06 23:11:50
|
|
|
De}{is
Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
|
Люди, подскажите пожалуйста, как мне программно узнать имя пользователя, который зарегистрирован на данный момент в сиситеме? Может есть какая-нибудь Api функция для этих целей?
p.s. сам зняю, что вопрос ламерский => в фак и к гоглу не посылать.
|
|
|
Как программно узнать имя текущего пользователя? - 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
|
|
|
Как программно узнать имя текущего пользователя? - 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;
Толь вместо имени пользователя в поле появляются какие-то закорючки, причем каждый раз разные… Может я где-то ошибся???
|
|
|
Как программно узнать имя текущего пользователя? - 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;
|
|
|
Как программно узнать имя текущего пользователя? - 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;
|
|
|
Как программно узнать имя текущего пользователя? - 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;
|
|
|
Как программно узнать имя текущего пользователя? - 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]
|
|
|
|
|