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。
如果函式失敗,傳回值是 系統錯誤碼,例如下列其中一個值。
傳回碼 | Description |
---|---|
|
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 |
程式庫 | Mpr.lib |
Dll | Mpr.dll |