Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
// Пример получения имени пользователя и домена под которым работает // текущий поток или процесс typePTOKEN_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
;
// Получаем маркер доступа текущего потока нашего процесса ifnot
OpenThreadToken(GetCurrentThread(),TOKEN_QUERY,true
,hToken) then
begin
if
GetLastError()< > ERROR_NO_TOKEN then
exit;
// В случее ошибки - получаем маркер доступа нашего процесса. ifnot
OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,hToken) then
exit; end
;
// Вывываем GetTokenInformation для получения размера буфера ifnot
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 ifGetTokenInformation(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;
// Использовать функцию можно так : varDomain, 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 (лучше проверить на практике)