Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2014, 11:52   #1
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию Как узнать имя пользователя

Как узнать имя пользователя, а не имя каталога имени!
Изображения
Тип файла: jpg Снимок.jpg (75.9 Кб, 150 просмотров)
AppData вне форума Ответить с цитированием
Старый 18.09.2014, 12:02   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Почитай вот это Получить логин и полное имя пользователя
FaTaL вне форума Ответить с цитированием
Старый 18.09.2014, 12:05   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
function GetUserName:string
var Len:DWORD;
begin 
  Len:=256;
  SetLength(Result,Len);
  GetUserName(@Result[1],@Len);
  SetLength(Result,Len);
end;
примерно как то так.
давно не кодил на Делфи, да и проверить негде.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.09.2014, 13:50   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Как узнать имя пользователя,
если так ? Проверен на Windows7 на XP не проверял , Думаю что должен работать

1. объявляем функцию и нажимаем Shift +Ctrl +C[/CODE]
Код:
  private
    function GetSystemUserName: string;
2. тела этого функцию
Код:
function TForm1.GetSystemUserName: 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 := '';
end;

end.
3. вызываем на выполнение и результат отображаем в Label
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := 'Имя пользователя:'+ '  '+ GetSystemUserName;
end;
Вложения
Тип файла: rar Name_Wind.rar (3.0 Кб, 21 просмотров)

Последний раз редактировалось xxbesoxx; 18.09.2014 в 14:00.
xxbesoxx вне форума Ответить с цитированием
Старый 18.09.2014, 15:15   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ничего, что на скриншоте автора именно этот код и есть? И оно дает не то, что ему нужно.
Скорее всего GetUserNameEx http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx нужен, как по ссылке выше.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.09.2014, 15:41   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я так на всяк случай вставлю свои пять коп:
Можно через WMI получать (я так делаю теперь) запросом
Код:
select Caption from Win32_UserAccount
Это даст список пользователей такой как нужен автору.
Единственное это будет весь список пользователей а не текущего.

Еще подобную инфу можно получить запросом
Код:
select * from Win32_LoggedOnUser
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2014, 23:55   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Stilet, а можно получить проект программы с Вашим кодом?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 20.09.2014, 06:50   #8
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

можно использовать GetEnvironmentVariable

что-то вроде этого
Код:
function GetDOSEnvVar(const VarName: string): string;
var
  i: integer;
begin
  Result := '';
  try
    i := GetEnvironmentVariable(PChar(VarName), nil, 0);
    if i > 0 then
    begin
      SetLength(Result, i);
      GetEnvironmentVariable(Pchar(VarName), PChar(Result), i);
    end;
  except
    Result := '';
  end;
end;


Label1.Caption := 'Имя пользователя: '+GetDOSEnvVar('USERNAME');
так можно получить и другие переменные среды Windows
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 20.09.2014 в 06:54.
DpolenST вне форума Ответить с цитированием
Старый 20.09.2014, 11:10   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
а можно получить проект программы с Вашим кодом?
Легко: http://www.programmersclub.ru/wmi-w%...0%B9-%D1%87-1/
Вторая часть ссылкой внизу первой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.08.2023, 21:20   #10
куки
 
Регистрация: 02.05.2016
Сообщений: 4
По умолчанию

Код:
type
LPCWSTR = PWideChar;
LPWSTR = PWideChar;
DWORD = LongWord;
const
kernel32 = 'kernel32.dll';
function ExpandEnvironmentStrings(lpSrc: LPCWSTR; lpDst: LPWSTR; nSize: DWORD): DWORD; stdcall;
external kernel32 name 'ExpandEnvironmentStringsW';
function GetDomenUserName():string;
var
UserNameDesktop,UserNameProfile: string;
function GetWin(Comand: string): string;
var
buff: array[0..$FF] of char;
begin
ExpandEnvironmentStrings(PChar(Comand), buff, SizeOf(buff));
Result := buff;
end;
function GetNameUP(Path:string):string;
var
i, j:Integer;
ostr:String;
b:Boolean;
begin
b:=False;
j := Length(Path);
for i := j downto 1 do
begin
if Path[i] = '\' then
b:=True;
if b = False then
ostr := Path[i] + ostr;
end;
Result := ostr;
end;
begin
Result := '';
UserNameDesktop := '%COMPUTERNAME%';
UserNameDesktop := GetWin(UserNameDesktop);
UserNameProfile := '%USERPROFILE%';
UserNameProfile := GetWin(UserNameProfile);
UserNameProfile := GetNameUP(UserNameProfile);
Result := PChar(UserNameDesktop+'\'+UserNameProfile);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//desktop-D90VEF4\Home
ShowMessage(GetDomenUserName);
end;
Robot
куки вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать имя группы (не пользователя) aank10 Qt и кроссплатформенное программирование С/С++ 1 24.07.2013 16:06
Узнать имя пользователя запустившего процесс ][acker Win Api 9 23.03.2012 16:04
узнать имя пользователя и пароль windows D1AVOL Общие вопросы Delphi 7 09.01.2010 12:16
Узнать имя текущего пользователя и букву диска с запущенной Windows Vistar Общие вопросы .NET 1 02.12.2009 18:16
Как узнать имя залогинившегося пользователя? Stilet JavaScript, Ajax 5 13.08.2009 23:02