NetSessionGetInfo-Funktion (lmshare.h)
Ruft Informationen zu einer Sitzung ab, die zwischen einem bestimmten Server und einer arbeitsstation eingerichtet wurde.
Syntax
NET_API_STATUS NET_API_FUNCTION NetSessionGetInfo(
[in] LMSTR servername,
[in] LMSTR UncClientName,
[in] LMSTR username,
[in] DWORD level,
[out] LPBYTE *bufptr
);
Parameter
[in] servername
Zeiger auf eine Zeichenfolge, die den DNS- oder NetBIOS-Namen des Remoteservers angibt, auf dem die Funktion ausgeführt werden soll. Wenn dieser Parameter NULL ist, wird der lokale Computer verwendet.
[in] UncClientName
Zeiger auf eine Zeichenfolge, die den Namen der Computersitzung angibt, für die Informationen zurückgegeben werden sollen. Dieser Parameter ist erforderlich und darf nicht NULL sein. Weitere Informationen finden Sie unter NetSessionEnum.
[in] username
Zeiger auf eine Zeichenfolge, die den Namen des Benutzers angibt, dessen Sitzungsinformationen zurückgegeben werden sollen. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in] level
Gibt die Informationsebene der Daten an. Dieser Parameter kann einen der folgenden Werte annehmen.
Wert | Bedeutung |
---|---|
|
Gibt den Namen des Computers zurück, der die Sitzung eingerichtet hat.
Der bufptr-Parameter verweist auf eine SESSION_INFO_0-Struktur . |
|
Gibt den Namen des Computers, den Namen des Benutzers und geöffnete Dateien, Pipes und Geräte auf dem Computer zurück.
Der parameter bufptr verweist auf eine SESSION_INFO_1-Struktur . |
|
Geben Sie zusätzlich zu den für Ebene 1 angegebenen Informationen den Typ des Clients und die Art und Weise zurück, wie der Benutzer die Sitzung eingerichtet hat.
Der bufptr-Parameter verweist auf eine SESSION_INFO_2-Struktur . |
|
Gibt den Namen des Computers zurück. Name des Benutzers; und Aktiv- und Leerlaufzeiten für die Sitzung.
Der bufptr-Parameter verweist auf eine SESSION_INFO_10-Struktur . |
[out] bufptr
Zeiger auf den Puffer, der die Daten empfängt. Das Format dieser Daten hängt vom Wert des level-Parameters ab. Weitere Informationen finden Sie unter Netzwerkverwaltungsfunktionspuffer und Netzwerkverwaltungsfunktionspufferlängen.
Dieser Puffer wird vom System zugeordnet und muss mithilfe der NetApiBufferFree-Funktion freigegeben werden.
Rückgabewert
Wenn die Funktion erfolgreich ist, wird der Rückgabewert NERR_Success.
Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Fehlercodes sein.
Rückgabecode | Beschreibung |
---|---|
|
Der Benutzer besitzt keinen Zugriff auf die angeforderten Informationen. |
|
Der für den level-Parameter angegebene Wert ist ungültig. |
|
Der angegebene Parameter ist ungültig. |
|
Nicht genügend Arbeitsspeicher ist verfügbar. |
|
Eine Sitzung mit dem Computernamen ist nicht vorhanden. |
|
Der Computername ist ungültig. |
|
Der Benutzername konnte nicht gefunden werden. |
Hinweise
Nur Mitglieder der lokalen Gruppe Administratoren oder Serveroperatoren können die NetSessionGetInfo-Funktion auf Ebene 1 oder Ebene 2 erfolgreich ausführen. Für Anrufe der Ebene 0 oder Stufe 10 ist keine spezielle Gruppenmitgliedschaft erforderlich.
Wenn Sie für Active Directory programmieren, können Sie möglicherweise bestimmte ADSI-Methoden (Active Directory Service Interface) aufrufen, um die gleiche Funktionalität zu erreichen, die Sie durch Aufrufen der Netzwerkverwaltungssitzungsfunktionen erreichen können. Weitere Informationen finden Sie unter IADsSession und IADsFileServiceOperations.
Wenn Sie diese Funktion auf der Informationsebene 1 oder 2 auf einem Mitgliedsserver oder einer Arbeitsstation aufrufen, können alle authentifizierten Benutzer die Informationen anzeigen.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Informationen zu einer Sitzung mithilfe eines Aufrufs der NetSessionGetInfo-Funktion abgerufen werden. Im Beispiel wird NetSessionGetInfo aufgerufen, wobei die Informationsebene 10 ( SESSION_INFO_10) angegeben wird. Wenn der Aufruf erfolgreich ist, gibt der Code Informationen zur Sitzung aus. Schließlich gibt das Beispiel den für den Informationspuffer zugeordneten Arbeitsspeicher frei.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "Netapi32.lib")
#include <stdio.h>
#include <windows.h>
#include <lm.h>
int wmain(int argc, wchar_t *argv[])
{
DWORD dwLevel = 10;
LPSESSION_INFO_10 pBuf = NULL;
LPTSTR pszServerName = NULL;
LPTSTR pszUNCClientName = NULL;
LPTSTR pszUserName = NULL;
NET_API_STATUS nStatus;
//
// Check command line arguments.
//
if (argc == 3)
{
pszUNCClientName = argv[1];
pszUserName = argv[2];
}
else if (argc == 4)
{
pszServerName = argv[1];
pszUNCClientName = argv[2];
pszUserName = argv[3];
}
else
{
wprintf(L"Usage: %s [\\\\ServerName] \\\\ClientName UserName\n", argv[0]);
exit(1);
}
//
// Call the NetSessionGetInfo function, specifying level 10.
//
nStatus = NetSessionGetInfo(pszServerName,
pszUNCClientName,
pszUserName,
dwLevel,
(LPBYTE *)&pBuf);
//
// If the call succeeds,
//
if (nStatus == NERR_Success)
{
if (pBuf != NULL)
{
//
// Print the session information.
//
wprintf(L"\n\tClient: %s\n", pBuf->sesi10_cname);
wprintf(L"\tUser: %s\n", pBuf->sesi10_username);
printf("\tActive: %d\n", pBuf->sesi10_time);
printf("\tIdle: %d\n", pBuf->sesi10_idle_time);
}
}
//
// Otherwise, indicate a system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
//
// Free the allocated memory.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
return 0;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | lmshare.h (lm.h einschließen) |
Bibliothek | Netapi32.lib |
DLL | Netapi32.dll |