NetWkstaUserEnum使用

原创 2006年05月17日 15:07:00
丁丁问了我,如何列举NT域服务器上已经登录的用户?
问了一下根号二,他提示我说可以看看LDAP与AD方面的,于是找到了NetWkstaUserEnum。

NetWkstaUserEnum

The NetWkstaUserEnum function lists information about all users currently logged on to the workstation. This list includes interactive, service and batch logons.

从MSDN上复制了一段代码,不知道效果如何!

#ifndef UNICODE
#define UNICODE
#endif

#include <stdio.h>
#include <assert.h>
#include <windows.h>
#include <lm.h>

int wmain(int argc, wchar_t *argv[])
{
LPWKSTA_USER_INFO_0 pBuf = NULL;
LPWKSTA_USER_INFO_0 pTmpBuf;
DWORD dwLevel = 0;
DWORD dwPrefMaxLen = -1;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwResumeHandle = 0;
DWORD i;
DWORD dwTotalCount = 0;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;

if (argc > 2)
{
fwprintf(stderr, L"Usage: %s [////ServerName]/n", argv[0]);
exit(1);
}
// The server is not the default local computer.
//
if (argc == 2)
pszServerName = argv[1];
fwprintf(stderr, L"/nUsers currently logged on %s:/n", pszServerName);
//
// Call the NetWkstaUserEnum function, specifying level 0.
//
do // begin do
{
nStatus = NetWkstaUserEnum(pszServerName,
dwLevel,
(LPBYTE*)&pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries,
&dwResumeHandle);
//
// If the call succeeds,
//
if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
{
if ((pTmpBuf = pBuf) != NULL)
{
//
// Loop through the entries.
//
for (i = 0; (i < dwEntriesRead); i++)
{
assert(pTmpBuf != NULL);

if (pTmpBuf == NULL)
{
//
// Only members of the Administrators local group
// can successfully execute NetWkstaUserEnum
// locally and on a remote server.
//
fprintf(stderr, "An access violation has occurred/n");
break;
}
//
// Print the user logged on to the workstation.
//
wprintf(L"/t-- %s/n", pTmpBuf->wkui0_username);

pTmpBuf++;
dwTotalCount++;
}
}
}
//
// 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);
pBuf = NULL;
}
}
//
// Continue to call NetWkstaUserEnum while
// there are more entries.
//
while (nStatus == ERROR_MORE_DATA); // end do
//
// Check again for allocated memory.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
//
// Print the final count of workstation users.
//
fprintf(stderr, "/nTotal of %d entries enumerated/n", dwTotalCount);

return 0;
}

错误信息:不能使用 '';文件已在使用中

错误类型: Microsoft JET Database Engine (0x80004005) 不能使用 ;文件已在使用中。 错误原因:解决:iis用户对数据目录的权限不够,ldb文件无法自动生成 ...
  • pupstar
  • pupstar
  • 2007年01月27日 18:45
  • 881

Java简单使用MD5加密

从网上找到了很多Java使用MD5加密的代码,整理了一下。 package org.ygy.demo; import java.io.UnsupportedEncodingException;...
  • jolingogo
  • jolingogo
  • 2013年02月04日 16:39
  • 4241

一张图教你如何使用Lucene

Apache Lucene 是一个高性能的,功能齐全的文本搜索引擎开发包。下面一张图展示了 Lucene 与应用之间的关系,可以看出 Lucene 用在什么地方,怎么用。...
  • u013745854
  • u013745854
  • 2016年03月01日 10:41
  • 1955

Android Studio中如何使用SlidingMenu框架

Android Studio中如何使用SlidingMenu框架
  • wj610671226
  • wj610671226
  • 2016年09月09日 15:32
  • 887

Lucene基本使用介绍

Lucene基本使用介绍   本文的目的不在于对Lucene的概念和设计这些进行介绍,仅在于介绍怎么样去使用Lucene来达到自己想要的几种常见的全文检索的需求,如果想深入了解Lucene的话本文不会...
  • guoyankun
  • guoyankun
  • 2014年02月19日 16:56
  • 1136

NDK使用步骤

使用之前请先安装已经安装好NDK以及android开发环境Android Studio前期配置 1.local.propertires指向正确的NDK地址 Android Studio 安装...
  • u013230511
  • u013230511
  • 2015年09月24日 19:56
  • 891

白盒测试-------定义/使用测试

不赖猴的笔记,转载请注明出处。一、定义1.定义节点。    节点n∈G(P)是变量v∈V的定义节点,记做DEF(v,n),当且仅当变量v的值由对应节点n的语句片段处定义。2.使用节点。    节点n∈...
  • A00553344
  • A00553344
  • 2007年10月20日 18:55
  • 3434

AngularJS 的基础使用

AngularJS 把应用程序数据绑定到 HTML 元素。 AngularJS 可以克隆和重复 HTML 元素。 AngularJS 可以隐藏和显示 HTML 元素。 AngularJS 可以在 HT...
  • zhaodongwoshini
  • zhaodongwoshini
  • 2016年11月21日 23:42
  • 1224

eclipse的正确使用方式

前情提要: Eclipse版本: Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1). Build...
  • vampirehgg
  • vampirehgg
  • 2015年10月18日 21:49
  • 3607

如何使用 js 控件

1.选择 js 控件        对于 js 控件的选择, 2.使用
  • tengdazhang770960436
  • tengdazhang770960436
  • 2014年04月24日 10:36
  • 2745
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NetWkstaUserEnum使用
举报原因:
原因补充:

(最多只允许输入30个字)