Функция WNetGetUserA (winnetwk.h)
Функция WNetGetUser извлекает текущее имя пользователя по умолчанию или имя пользователя, используемое для установки сетевого подключения.
Синтаксис
DWORD WNetGetUserA(
[in] LPCSTR lpName,
[out] LPSTR lpUserName,
[in, out] LPDWORD lpnLength
);
Параметры
[in] lpName
Указатель на константную строку, завершающуюся значением NULL, которая указывает либо имя локального устройства, которое было перенаправлено на сетевой ресурс, либо удаленное имя сетевого ресурса, к которому было установлено подключение без перенаправления локального устройства.
Если этот параметр имеет значение NULL или пустую строку, система возвращает имя текущего пользователя для процесса.
[out] lpUserName
Указатель на буфер, который получает имя пользователя, завершающееся пустым значением.
[in, out] lpnLength
Указатель на переменную, указывающую размер буфера lpUserName в символах. Если вызов завершается сбоем из-за недостаточно большого размера буфера, эта переменная содержит требуемый размер буфера.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет NO_ERROR.
Если функция завершается сбоем, возвращаемое значение представляет собой системный код ошибки, например одно из следующих значений.
Код возврата | Описание |
---|---|
|
Устройство, указанное параметром lpName , не является перенаправленным или сетевым именем. |
|
При последующих вызовах доступны дополнительные записи. |
|
Сеть недоступна. |
|
Произошла ошибка, относявшаяся к сети. Чтобы получить описание ошибки, вызовите функцию WNetGetLastError . |
|
Ни один из поставщиков не распознает локальное имя как имеющее подключение. Однако сеть недоступна по крайней мере для одного поставщика, которому может принадлежать подключение. |
Комментарии
Функция WNetGetUser не знает об общих ресурсах в распределенной файловой системе (DFS). Если имя, указанное параметром lpName , является локальным устройством, перенаправленным в общую папку DFS или удаленный ресурс, представляющий общую папку DFS, функция WNetGetUser завершается сбоем с ERROR_NOT_CONNECTED.
Примеры
В следующем примере кода показано, как использовать функцию WNetGetUser для получения имени пользователя, связанного с перенаправленным локальным устройством или удаленным сетевым ресурсом.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "mpr.lib")
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <Winnetwk.h>
int wmain(int argc, wchar_t * argv[])
{
DWORD dwRetVal;
WCHAR UserName[MAX_PATH];
DWORD dwNameLength = MAX_PATH;
if (argc != 2) {
wprintf
(L"Usage: %s [Redirected-LocalDevice or Network-Resource-Remote-name\n",
argv[0]);
exit(1);
}
wprintf(L"Calling WNetGetUser with Network-Resource = %s\n", argv[1]);
dwRetVal = WNetGetUser(argv[1], UserName, &dwNameLength);
//
// If the call succeeds, print the user information.
//
if (dwRetVal == NO_ERROR) {
wprintf(L"WNetGetUser returned success\n");
wprintf(L"\tUsername=%s NameLength=%d\n", &UserName, dwNameLength);
exit(0);
}
else {
wprintf(L"WNetGetUser failed with error: %u\n", dwRetVal);
exit(1);
}
}
Примечание
Заголовок winnetwk.h определяет WNetGetUser в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winnetwk.h |
Библиотека | Mpr.lib |
DLL | Mpr.dll |