Форум: "Сети";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизКак узнать имя пользователя под которым комп вошел в сеть(домен)? Найти похожие ветки
← →
zam (2002-06-21 18:37) [0]Можно ли вообще узнать имя под которым пользователь подключился(аутентифицировался) в домене под WinNT и подключен ли он к домену вообще. Задача в том, чтобы защита проги была основана на NT защите. Просто даже примерно не знаю как подойти к проблемме.
Подскажите ПЛИЗ !!!!!!!
← →
ZZ (2002-06-21 19:04) [1]http://rsdn.ru/forum/?mid=10429
← →
Song (2002-06-21 19:37) [2]GetUserName() ?
← →
DeMoN-777 (2002-06-22 11:07) [3]Единая база процедур и функций для Delphi для сайта Мастера Delphi - тестовая версия
Получение текущего имени пользователя
http://delphibase.endimus.com/?action=viewfunc&topic=sysparams&index=8
С уважением.
← →
GrayFox (2002-06-22 15:22) [4]Как получить имя домена? В то что на сайте МС, в базе знаний, мне врубиться трудно, в справке делфи такой функции нет.
← →
ZZ (2002-06-22 16:11) [5]Я на всякий случай процетирую :)
//**********************************************************************
//
// FUNCTION: GetCurrentUserAndDomain - This function looks up
// the user name and domain name for the user account
// associated with the calling thread.
//
// PARAMETERS: szUser - a buffer that receives the user name
// pcchUser - the size, in characters, of szUser
// szDomain - a buffer that receives the domain name
// pcchDomain - the size, in characters, of szDomain
//
// RETURN VALUE: TRUE if the function succeeds. Otherwise, FALSE and
// GetLastError() will return the failure reason.
//
// If either of the supplied buffers are too small,
// GetLastError() will return ERROR_INSUFFICIENT_BUFFER
// and pcchUser and pcchDomain will be adjusted to
// reflect the required buffer sizes.
//
//**********************************************************************
BOOL GetCurrentUserAndDomain(PTSTR szUser, PDWORD pcchUser,
PTSTR szDomain, PDWORD pcchDomain) {
BOOL fSuccess = FALSE;
HANDLE hToken = NULL;
PTOKEN_USER ptiUser = NULL;
DWORD cbti = 0;
SID_NAME_USE snu;
__try {
// Get the calling thread"s access token.
if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, TRUE,
&hToken)) {
if (GetLastError() != ERROR_NO_TOKEN)
__leave;
// Retry against process token if no thread token exists.
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY,
&hToken))
__leave;
}
// Obtain the size of the user information in the token.
if (GetTokenInformation(hToken, TokenUser, NULL, 0, &cbti)) {
// Call should have failed due to zero-length buffer.
__leave;
} else {
// Call should have failed due to zero-length buffer.
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
__leave;
}
// Allocate buffer for user information in the token.
ptiUser = (PTOKEN_USER) HeapAlloc(GetProcessHeap(), 0, cbti);
if (!ptiUser)
__leave;
// Retrieve the user information from the token.
if (!GetTokenInformation(hToken, TokenUser, ptiUser, cbti, &cbti))
__leave;
// Retrieve user name and domain name based on user"s SID.
if (!LookupAccountSid(NULL, ptiUser->User.Sid, szUser, pcchUser,
szDomain, pcchDomain, &snu))
__leave;
fSuccess = TRUE;
} __finally {
// Free resources.
if (hToken)
CloseHandle(hToken);
if (ptiUser)
HeapFree(GetProcessHeap(), 0, ptiUser);
}
return fSuccess;
}
Ну и чего нет в дельфях ? Описание всех функций можно найти там-же в MSDN.
← →
zam (2002-06-22 22:03) [6]Да, функция работает, но как узнать, подключен ли пользователь к домену или нет, ведь когда это просто локальный пользователь, вместо домена возвращается ися локального компа.
← →
ZZ (2002-06-23 04:43) [7]zam
Ну и каким боком локальный пользователь подключен к домену?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c