Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Имя пользователя (и др. инфа о нем), из-под аккаунта которого запущена программа  (Прочитано 3830 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Microsom
Гость
« : 23-01-2006 23:34 » 

Как осуществить сабж в Delphi (желательно версии 7) в Win2000/XP в терминально режиме (из-под mstsc.exe) и в локальном режиме (компьютер - член домена с Win2000 Server с AD, работа происходит локально, но авторизация осуществляется на контроллере домена)?
Заранее спасибо.
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 24-01-2006 07:14 » new

вот, вытащил из одного сайта...
Код:
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: TObject);
begin
  ShowMessage(GetCurrentUserName);
end;

{2.}

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: TObject);
var
  CurrentUserName: string;
begin
  GetCurrentUserName(CurrentUserName);
  Label1.Caption :=  CurrentUserName;
end;

{*********************************************}

{
  Windows 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; // Windows 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: TObject);
begin
  Edit1.Text := LoggedOnUserNameEx(NameSamCompatible);
end;
« Последнее редактирование: 04-12-2007 20:34 от Алексей1153++ » Записан

Удачного всем кодинга! -=x[PooH]x=-
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines