На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

LogonUser



The LogonUser function attempts to perform a user logon operation. You specify the user with a user name and domain, and authenticate the user with a clear-text password. If the function succeeds, you receive a handle to a token that represents the logged-on user. You can then use this token handle to impersonate the specified user, or in most cases, to create a process running in the context of the specified user.

BOOL LogonUser(

LPTSTR lpszUsername, // string that specifies the user name
LPTSTR lpszDomain, // string that specifies the domain or server
LPTSTR lpszPassword, // string that specifies the password
DWORD dwLogonType, // specifies the type of logon operation
DWORD dwLogonProvider, // specifies the logon provider
PHANDLE phToken // pointer to variable to receive token handle
);


Parameters

lpszUsername

Pointer to a null-terminated string that specifies the user name. This is the name of the user account to log on to.

lpszDomain

Pointer to a null-terminated string that specifies the domain or server to log on to. If this parameter is ".", LogonUser searches only the local account database for the account specified in lpszUsername. If this parameter is NULL, LogonUser searches the local account database, and then searches trusted domain account databases, until it finds the lpszUsername account or the search is exhausted without finding the account name.

lpszPassword

Pointer to a null-terminated string that specifies the clear-text password for the user account specified by lpszUsername.

dwLogonType

Specifies the type of logon operation to perform. The following logon types are defined:

Value Meaning
LOGON32_LOGON_BATCH This logon type is intended for batch servers, where processes may be executing on behalf of a user without their direct intervention; or for higher performance servers that process many clear-text authentication attempts at a time, such as mail or web servers. LogonUser does not cache credentials for this logon type.
LOGON32_LOGON_INTERACTIVE This logon type is intended for users who will be interactively using the machine, such as a user being logged on by a terminal server, remote shell, or similar process. This logon type has the additional expense of caching logon information for disconnected operation, and is therefore inappropriate for some client/server applications, such as a mail server.
LOGON32_LOGON_SERVICE Indicates a service-type logon. The account provided must have the service privilege enabled.
LOGON32_LOGON_NETWORK This logon type is intended for high performance servers to authenticate clear text passwords. LogonUser does not cache credentials for this logon type. This is the fastest logon path, but there are two limitations. First, the function returns an impersonation token, not a primary token. You cannot use this token directly in the CreateProcessAsUser function. However, you can call the DuplicateTokenEx function to convert the token to a primary token, and then use it in CreateProcessAsUser. Second, if you convert the token to a primary token and use it in CreateProcessAsUser to start a process, the new process will not be able to access other network resources, such as remote servers or printers, through the redirector.


dwLogonProvider

Specifies the logon provider. The following logon providers are defined:

Value Meaning
LOGON32_PROVIDER_DEFAULT Use the standard logon provider. This is the recommended value for dwLogonProvider. It gives an application the maximum upward compatibility with future releases of Windows NT.


phToken

Pointer to a HANDLE variable that receives a handle to a token that represents the specified user.

You can use the returned handle in calls to the ImpersonateLoggedOnUser function.
In most cases, the returned handle is a primary token that you can use in calls to the CreateProcessAsUser function. However, if you specify the LOGON32_LOGON_NETWORK flag, LogonUser returns an impersonation token that you cannot use in CreateProcessAsUser unless you call DuplicateTokenEx to convert it to a primary token.
When you no longer need this handle, close it by calling the CloseHandle function.



Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

The process that calls LogonUser must have the SE_TCB_NAME privilege. The privilege does not need to be enabled. The LogonUser function enables the privilege as necessary. The function fails if the calling process does not have the SE_TCB_NAME privilege, and GetLastError returns the error code ERROR_PRIVILEGE_NOT_HELD. For more information about privileges, see Privileges.
A user is considered logged on as long as at least one token exists. If you call CreateProcessAsUser and then close the token, the system considers the user as still logged on until the process (and all child processes) have ended.

If the LogonUser call is successful, the system notifies network providers that the logon occurred by calling the provider's NPLogonNotify entry-point.

See Also

CreateProcessAsUser, ImpersonateLoggedOnUser


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

LogonUser



Функция LogonUser пытается выполнять действие ввода потребителя. Вы определяете потребителю с именем потребителя и области и удостоверять потребителя с ясным-текстовым паролем. Если функция добивается успеха, Вы получаете ручку в признак, который представляется зарегистрированный-на потребителе. Вы можете затем использовать эту символическую ручку, чтобы подражать определенному потребителю, или в большинстве случаев, чтобы создавать процесс, работающий в контексте определенного потребителя.

BOOL LogonUser(

LPTSTR lpszUsername, // СТРОКА, что определяет имя пользователя LPTSTR lpszDomain, // строка, что определяет область или сервер LPTSTR lpszPassword, // строка, что определяет пароль DWORD dwLogonType, // определяет тип операции ввода DWORD dwLogonProvider, // определяет поставщика ввода PHANDLE phToken // указатель в переменную, чтобы получать символическую ручку
);


Параметры

lpszUsername

Указатель в недействительный расторгнутую строку, которая определяет имя пользователя. Это - имя счета пользователя, чтобы регистрироваться в.

lpszDomain

Указатель в недействительный расторгнутую строку, которая определяет область или сервер, чтобы регистрироваться в. Если этот параметр - ".", LogonUser ИЩЕТСЯ только локальную учетную базу данных за счет определенное в lpszUsername. Если этот параметр НЕДЕЙСТВИТЕЛЕН, LogonUser ищет локальную учетную базу данных, и тогда ищет надежные доменные учетные базы данных, пока это не найдет счет lpszUsername или поиск не исчерпан обнаруживая учетное имя.

lpszPassword

Указатель в недействительный расторгнутую строку, которая определяет ясный-текстовый пароль за счет пользователя определенного lpszUsername.

dwLogonType

Определяет тип операции ввода, чтобы выполняться. Типы ввода следующего определены:

Значение Величины
LOGON32_LOGON_BATCH Этого типа ввода предназначен для пакетных серверов, где процессы могут выполняться от имени пользователя без их прямого вмешательства; или для более высоких серверов исполнения, которые обрабатывают много ясные-текстовые попытки аутентификации за один раз, как например, серверы почты или веб. LogonUser НЕ кеширует верительные грамоты для этого типа ввода.
LOGON32_LOGON_INTERACTIVE Этого типа ввода предназначен для пользователей, которые в диалоге используют машину, как например, пользователь, регистрированный на терминальным сервером, дистанционной оболочкой, или аналогичным процессом. Этот тип ввода имеет дополнительный расход кэширования информации ввода для разъединенной операции, и следовательно неподходящий для некоторого клиента/сервера приложений, как например, сервер почты.
LOGON32_LOGON_SERVICE Указывает услугу-тип ввода. Предусмотренный счет должен приспособиться привилегию услуги.
LOGON32_LOGON_NETWORK Этого типа ввода предназначен для высоких серверов исполнения, чтобы удостоверять ясные текстовые пароли. LogonUser НЕ кеширует верительные грамоты для этого типа ввода. Это - самый быстрый путь ввода, но есть два ограничения. Сначала, функция возвращает признак маскировки, не первичный признак. Вы не можете использовать этот признак непосредственно в функции CreateProcessAsUser. Тем не менее, Вы можете вызвать функцию DuplicateTokenEx, чтобы преобразовывать признак в первичный признак, затем использовать это в CreateProcessAsUser. Во-вторых, если Вы преобразовываете признак в первичный признак и используете это в CreateProcessAsUser, чтобы начинать с процесса, новый процесс не будет способным иметь доступ к другим сетевым ресурсам, как например, дистанционные серверы или принтеры, через redirector.


dwLogonProvider

Определяет поставщика ввода. Поставщики ввода следующего определены:

Значение Величины
LOGON32_PROVIDER_DEFAULT Использует стандартного поставщика ввода. Это - рекомендуемая величина для dwLogonProvider. Это дает приложению максимальную вверх совместимость с будущими версиями Windows NT.


phToken

Указатель в переменную РУЧКИ, которая получает ручку в признак, который представляет определенного пользователя.

Вы можете использовать возвращанную ручку на вызовах в функцию ImpersonateLoggedOnUser.
В большинстве случаев, возвращанная ручка является первичным признаком, который Вы можете использовать на вызовах в функцию CreateProcessAsUser. Тем не менее, если Вы определяете флаг LOGON32_LOGON_NETWORK, LogonUser возвращает признак маскировки, который Вы не можете использовать в CreateProcessAsUser если Вы не вызываете DuplicateTokenEx, чтобы преобразовывать это в первичный признак.
Когда Вы больше не нужно эта ручка, закройте этому вызывая функцию CloseHandle.



Обратные Величины

Если функция добивается успеха, обратная величина ненулевая.
Если функция терпит неудачу, обратная величина нулевая. Для того, чтобы расширять информацию ошибки, вызовите GetLastError.

Замечания

Процесс, который вызывает LogonUser должен иметь привилегию SE_TCB_NAME. Привилегия не должна быть приспособлена. Функция LogonUser приспосабливается привилегию как необходимый. Функция терпит неудачу если вызывающий процесс нет имеет привилегию SE_TCB_NAME, и GetLastError возвращает код ошибки ERROR_PRIVILEGE_NOT_HELD. Более подробно о привилегиях, смотри Привилегии.
Пользователь считается зарегистрированным на так же долго (длиной) как по крайней мере один признак существует. Если Вы вызываете CreateProcessAsUser и тогда закройте признак, система рассматривает пользователя как все еще зарегистрировано на до процесса (и все процессы ребенка), закончился.

Если вызов LogonUser имеет успех, система уведомляет сетевых поставщиков, что ввод происходил разговором поставщик NPLogonNotify вход-точка.

Смотри Также

CreateProcessAsUser, ImpersonateLoggedOnUser


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz