Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Вы можете попробовать этот код. Я без проблем использовал его под Netware LAN в течение долгого времени. Работа программы зависит от наличия NWCALLS.DLL на машине пользователя, но если он использовал сеть хоть раз, данная библиотека должна присутствовать на его машине.
unitGetLogin; { Данный модуль инкапсулирует несколько внешних функций библиотеки NWCALLS.DLL Создан на основе кода Григория Трубецкого Модуль содержит функции, возвращающие Netware User ID и полное имя пользователя. } interface
uses
SysUtils, Messages, Dialogs; function
GetUserLogin: string
; function
GetUserFullName(SomeUser: string
): string
; implementation
type
NWTimeStamp = record
Year: byte; Month: byte; Day: byte; Hour: byte; Minute: byte; Second: byte; DayOfWeek: byte; end
;
{Netware API - требуется NWCALLS.DLL} functionNWGetDefaultConnectionID(var
Connection: word): word; far; external
'NWCALLS'; function
NWGetConnectionNumber(Connection: word; var
ConnectionNumber: word): word; far; external
'NWCALLS'; function
NWGetConnectionInformation(Connection: word; ConnectionNumber: word; ObjectName: pchar; var
ObjectType: word; var
ObjectID: word; var
LoginTime: NWTimeStamp): word; far; external
'NWCALLS'; function
NWReadPropertyValue(Connection: word; ObjectName: pChar; ObjectType: word; PropertyName: pChar; DataSetIndex: byte; DataBuffer: pChar; var
More: byte; var
Flags: byte): word; far; external
'NWCALLS';
{ конец секции работы с Netware API } functionGetUserLogin: string
; var
ConnectionID: word; ConnectionNumber: word; RC: word; Name: array
[0..50] of
Char; ObjectType: word; ObjectID: word; LoginTime: NWTimeStamp; begin
RC := NWGetDefaultConnectionID(ConnectionID); RC := NWGetConnectionNumber(ConnectionID, ConnectionNumber); RC := NWGetConnectionInformation(ConnectionID, ConnectionNumber, Name, ObjectType, ObjectID, LoginTime); Result := StrPas(Name); end
; function
GetUserFullName(SomeUser: string
): string
;
{Реально имя пользователя является свойством 'IDENTIFICATON'. Вы должны вызывать NWReadPropertyValue с параметрами (между прочим) вашего ConnectionID, имени объекта (такое же, как и логин пользователя, сетевое имя которого мы пытаемся узнать) и свойство name, которое нам необходимо получить, в нашем случае 'IDENTIFICATION' (это и есть искомая величина - полное имя пользователя).} varConnectionID: word; RC: word; Name: array
[0..50] of
Char; ObjectType: word; PropName: array
[0..14] of
Char; DataSetIndex: byte; FullName: array
[0..127] of
Char; More: byte; Flags: byte; begin
RC := NWGetDefaultConnectionID(ConnectionID); ObjectType := 256;
{пользователь} StrPCopy(PropName, 'IDENTIFICATION'); DataSetIndex := 1; StrPCopy(Name, SomeUser); RC := NWReadPropertyValue(ConnectionID, Name, ObjectType, PropName, DataSetIndex, FullName, More, Flags); ifRC = 35324 then
MessageDlg('Пользователь ' + SomeUser + ' на этом сервере не обнаружен!', mtError, [mbOK], 0); Result := StrPas(FullName); end
; end
.