Пишу программу на VBA под MS Word. Нужно получить имя пользователя. Испоьзую для этого функцию GetUserName.Но хочется получить полное имя пользователя так как оно записано в домене, например, GetUserName возвращает мне только "petrov", а хочется получить Петров Сергей Иванович. Смотрел в Win32 есть такая функция как GetUserNameEx через котрую можно это сделать, а вот как ее подключить к VB не нашел или это вообще не возможно.
Жду вариантов.
Здравствуйте, labslo, Вы писали:
Имеем:
BOOLEAN GetUserNameEx(
EXTENDED_NAME_FORMAT NameFormat,
LPTSTR lpNameBuffer,
PULONG nSize
);
и
typedef enum
{
NameUnknown = 0,
NameFullyQualifiedDN = 1,
NameSamCompatible = 2,
NameDisplay = 3,
NameUniqueId = 6,
NameCanonical = 7,
NameUserPrincipal = 8,
NameCanonicalEx = 9,
NameServicePrincipal = 10,
NameDnsDomain = 12
} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;
Немножко думаем

и получаем:
Private Enum EXTENDED_NAME_FORMAT
NameUnknown = 0
NameFullyQualifiedDN = 1
NameSamCompatible = 2
NameDisplay = 3
NameUniqueId = 6
NameCanonical = 7
NameUserPrincipal = 8
NameCanonicalEx = 9
NameServicePrincipal = 10
NameDnsDomain = 12
End Enum
Private Declare Function GetUserNameEx Lib "Secur32.Dll" Alias "GetUserNameExA" (ByVal NameFormat As EXTENDED_NAME_FORMAT, ByVal lpNameBuffer As String, ByRef nSize As Long) As Long
Private Sub Form_Load()
Dim sName As String * 255
Dim lenght As Long
lenght = 255
GetUserNameEx NameFullyQualifiedDN, sName, lenght
MsgBox sName
End Sub
Но помним что:
Client: Included in Windows XP and Windows 2000 Professional.
Server: Included in Windows Server 2003 and Windows 2000 Server.
Unicode: Implemented as Unicode and ANSI versions.
Всего-то делов

... << RSDN@Home 1.1.3 stable >>
Здравствуйте, hermit., Вы писали:
В твоём случае используем
NameDisplay
GetUserNameEx
NameDisplay, sName, lenght
... << RSDN@Home 1.1.3 stable >>
Здравствуйте, labslo, Вы писали:
L>Все работает. Спасибо.
Ну так оценочку бы поставил

... << RSDN@Home 1.1.3 stable >>