WNetGetUserA 函数 (winnetwk.h)
WNetGetUser 函数检索当前默认用户名或用于建立网络连接的用户名。
语法
DWORD WNetGetUserA(
[in] LPCSTR lpName,
[out] LPSTR lpUserName,
[in, out] LPDWORD lpnLength
);
参数
[in] lpName
指向常量 null终止字符串的指针,该字符串指定已重定向到网络资源的本地设备的名称,或者已将连接重定向到的网络资源的远程名称,而无需重定向本地设备。
如果此参数 NULL 或空字符串,则系统会返回进程的当前用户的名称。
[out] lpUserName
指向接收 null终止用户名的缓冲区的指针。
[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 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winnetwk.h |
库 | Mpr.lib |
DLL | Mpr.dll |