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 |