|
|
#1 |
|
Участник
|
Получить имя пользователя в формате DOMAIN\user
А никто случаем не делал ф-ю, чтобы имя юзера выдавала вместе с доменом ?
В WinAPI есть вроде такая - LookupAccountNameA, но что-то у меня не получается ее правильно объявить - параметров дофига, не пойму что куда подставлять
|
|
|
|
|
#2 |
|
Участник
|
вот пример:
http://www.codersource.net/win32_user_name.html Цитата:
The GetUserName function retrieves the user name of the current thread. This is the name of the user currently logged onto the system.
Цитата:
BOOL GetUserName( LPTSTR lpBuffer, LPDWORD nSize);
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#3 |
|
Боец
|
А какие пользователи интересуют? Есть в 4-ке функциональность импорта юзеров из выбранных доменом (Администрирование->Пользователи->Импорт). Там используется класс AxaptaUserManager. Посмотрите, на вскидку с вашей задачей он справится.
|
|
|
|
|
#4 |
|
Участник
|
|
|
|
|
|
#5 |
|
Участник
|
В коде, который по ссылке, разве не это делается?
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#6 |
|
Administrator
|
Сталкивался я с этим правда не в Аксапте, а в Аксессе. Нарыл я на бескрайних просторах следующий код на VB:
Код: ' Расширенное имя польователя (в формате Домен\Пользователь)
Private Declare Function GetUserNameAPI Lib "secur32.dll" Alias "GetUserNameExA" (ByVal NameFormat As Long, ByVal lpNameBuffer As String, nSize As Long) As Long
Public Function GetWindowsUser() As String
Dim sBuffer As String
Dim lLen As Long
sBuffer = Space(255 + 1)
lLen = Len(sBuffer)
If CBool(GetUserNameAPI(2, sBuffer, lLen)) Then
GetWindowsUser = StrZ(sBuffer)
Else
GetWindowsUser = ""
End If
End FunctionА код, приведенный по ссылке - слишком длинный Его читать долго ![]() Функция StrZ - она невстроенная - она просто отсекает для VB символ с кодом 0. Но для полноты картины - приведу и эту функцию: Код: ' Отсекание символа с кодом 0
Public Function StrZ(par As String) As String
Dim nSize As Long, i As Long, Rez As String
nSize = Len(par)
i = InStr(1, par, vbNullChar) - 1
If i > nSize Then i = nSize
If i < 0 Then i = nSize
StrZ = Mid(par, 1, i)
End Function
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 05.08.2008 в 18:59. |
|
|
|
|
#7 |
|
Участник
|
getUserNameEx - то что надо, получилось вот так -
X++: // Возвращает полное имя пользователя - DOMAIN\user #define.structSize(255+1) client static str getUserNameEx() { DLLFunction _getUserNameEx ; Binary bSize = new Binary(#SizeOfInt); Binary bStr = new Binary(#structSize); DLL _DLL = new DLL("secur32"); ; bSize.dWord(#Offset0,#structSize); _getUserNameEx = new DLLFunction(_DLL, 'GetUserNameExA'); _getUserNameEx.returns(ExtTypes::DWord); _getUserNameEx.arg(ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::Pointer); if (_getUserNameEx.call(2,bStr,bSize)) { return bStr.string(#Offset0); } else return ""; } |
|
|