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

Вниз

Как определить имя пользователя в ХР   Найти похожие ветки 

 
Necromancer   (2005-01-21 17:19) [0]

Как определить имя пользователя  в ХР???


 
Igor_thief   (2005-01-21 17:27) [1]

Посмотреть значение а реестре.


 
qqqqq ©   (2005-01-21 17:30) [2]

Идиоты, тупые сволочи!


 
REA   (2005-01-21 17:36) [3]

GetUserName, GetUserNameEx


 
Necromancer   (2005-01-21 17:51) [4]

var
user : PAnsiChar ;
void : cardinal;
begin
GetUserName(user,void);
-- здесь 2-ой параметр типа cardinal(я не знаю что это за тип) как правильно сделать???
end;


 
begin...end ©   (2005-01-21 18:06) [5]

> [2] qqqqq ©   (21.01.05 17:30)

Это Вы о ком?

> [4] Necromancer   (21.01.05 17:51)

function GetUserNameString: String;
var
 UserName: PAnsiChar;
 Size: Cardinal;
begin
 Size := MAX_COMPUTERNAME_LENGTH + 1; // Не уверен
 GetMem(UserName, Size);
 try
   if GetUserName(UserName, Size) then
     Result := UserName
 finally
   FreeMem(UserName)
 end
end.


 
rdm ©   (2005-01-22 19:48) [6]

> Necromancer:
cardinal = 0..2^32-1

var
 b : cardinal; s : string[128];
begin
 b := Length(s);
 GetUserName(@s[1],b); SetLength(s,b);
end;


 
Вариант ©   (2005-01-22 22:36) [7]

// Пример получения имени пользователя и домена под которым работает
// текущий поток или процесс
type
PTOKEN_USER = ^TOKEN_USER;
_TOKEN_USER = record
  User : TSidAndAttributes;
end;
TOKEN_USER = _TOKEN_USER;

function GetCurrentUserAndDomain (
     szUser : PChar; var chUser: DWORD; szDomain :PChar; var chDomain : DWORD
):Boolean;
var
hToken : THandle;
cbBuf  : Cardinal;
ptiUser : PTOKEN_USER;
snu    : SID_NAME_USE;
begin
Result:=false;
// Получаем маркер доступа текущего потока нашего процесса
if not OpenThreadToken(GetCurrentThread(),TOKEN_QUERY,true,hToken)
 then begin
  if GetLastError()< > ERROR_NO_TOKEN then exit;
  // В случее ошибки - получаем маркер доступа нашего процесса.
  if not OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,hToken)
   then exit;
 end;

// Вывываем GetTokenInformation для получения размера буфера
if not GetTokenInformation(hToken, TokenUser, nil, 0, cbBuf)
 then if GetLastError()< > ERROR_INSUFFICIENT_BUFFER
  then begin
   CloseHandle(hToken);
   exit;
  end;

if cbBuf = 0 then exit;

// Выделяем память под буфер
GetMem(ptiUser,cbBuf);

// В случае удачного вызова получим указатель на TOKEN_USER
if GetTokenInformation(hToken,TokenUser,ptiUser,cbBuf,cbBuf)
 then begin
  // Ищем имя пользователя и его домен по его SID
  if LookupAccountSid(nil,ptiUser.User.Sid,szUser,chUser,szDomain,chDomain,snu)
   then Result:=true;
 end;

// Освобождаем ресурсы
CloseHandle(hToken);
FreeMem(ptiUser);
end;

// Использовать функцию можно так :
var
Domain, User : array [0..50] of Char;
chDomain,chUser : Cardinal;
begin
chDomain:=50;
chUser :=50;
if GetCurrentUserAndDomain(User,chuser,Domain,chDomain)
 then ...
end;

// Если вам необходимо получить только имя пользователя - используйте GetUserName
// Данный пример можно использовать и для определения - запущен ли процесс
// системой или пользователем.  Учетной записи Localsystem соответствует
// имя пользователя - SYSTEM и домен NT AUTORITY (лучше проверить на практике)


 
Anatoly Podgoretsky ©   (2005-01-23 02:54) [8]

У вас соревнование - кто длинне напишет?


 
Defunct ©   (2005-01-23 04:54) [9]

тут говорят чем длиннее тем дороже :)



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.046 c
1-1106224246
Bobby Digital
2005-01-20 15:30
2005.02.06
Polygon


1-1106574983
Knight
2005-01-24 16:56
2005.02.06
Кто-нибудь пробовал использовать в программах вращение формы?


11-1089650462
kosha80
2004-07-12 20:41
2005.02.06
Сохранить данные из TreeView


1-1106412722
Никита
2005-01-22 19:52
2005.02.06
Глюк ImageList


1-1106414061
ninja
2005-01-22 20:14
2005.02.06
раздражающие звуки