WNetGetUserW 函数 (winnetwk.h)
WNetGetUser 函数检索当前默认用户名或用于建立网络连接的用户名。
语法
DWORD WNetGetUserW(
[in] LPCWSTR lpName,
[out] LPWSTR 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 [仅限桌面应用] |
目标平台 | Windows |
标头 | winnetwk.h |
Library | Mpr.lib |
DLL | Mpr.dll |