Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
1-1106434307
Pine
2005-01-23 01:51
2005.02.06
Создание файла эксель и запись в него при помощи OLE


14-1106053815
Шишкин Илья
2005-01-18 16:10
2005.02.06
Стеганография


14-1105685336
WondeRu
2005-01-14 09:48
2005.02.06
Управляем мобилой устройствами по RS-232! Хочу, но как?


3-1104347007
Apophis
2004-12-29 22:03
2005.02.06
Почему не работает SQL запрос?


8-1098395688
фантазер
2004-10-22 01:54
2005.02.06
Список форматов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский