如何取得Windows中的用户数量,只要数量不需要用户名
解决方案 »
- 请教:在COM中使用CDialog
- 关于Static Text的初级问题
- 普通程序如何跟服务程序通讯? 不要 Controlservice, 因为要交互一个缓冲区
- 工作区的External Dependencies的问题?
- 北京急聘VC开发工程师
- 请大哥们来看看
- 如何获得文档句柄?
- 哪位高手留下你的qq号码,我实在不行了,要在一个月内从没有学过vc,要写出一个程序,哪位高手帮兄弟一把,感激不尽,有太多问题要问了
- 显示文本内容,用什么控件好
- Team fundation server2010关于用户映射的问题
- 是微软的BUG吗?用程序更改WINDOWS服务!
- 关于DateTimePicker控件
Platform SDK: Directory Services WinNT Binding String
注意2、示例程序,部分错误处理未加入。#include "Iads.h"
#include "Adshlp.h"
#pragma comment(lib, "ADSIid.Lib")
#pragma comment(lib, "activeds.lib") void CTestDlg::OnEnumUser()
{
CoInitialize(NULL);
HRESULT hr = S_OK;
VARIANT varUserArray, varUserSingle;
ULONG lFetch = 0;
IEnumVARIANT *pEnum = NULL;
IADsContainer *pCont = NULL;
hr=ADsGetObject(
L"WinNT://YourComputerName,computer",
IID_IADsContainer,
(void**) &pCont);
if(FAILED(hr))
return ;
//Create a string array of class names as search filters.
LPWSTR pszUser[] = {L"User"};
VariantInit(&varUserArray);
hr = ADsBuildVarArrayStr(
pszUser,
sizeof(pszUser)/sizeof(LPWSTR),
&varUserArray);
if(FAILED(hr))
return ;
//Apply filters to objects in the container.
hr = pCont->put_Filter( varUserArray );
VariantClear(&varUserArray);
if(FAILED(hr))
return ;
hr = ADsBuildEnumerator(pCont,&pEnum);
if(FAILED(hr))
return ;
pCont->Release();
int nUserNum = 0;
while (hr == S_OK)
{
hr = ADsEnumerateNext(pEnum,1, &varUserSingle, &lFetch);
if (lFetch)
{
nUserNum++;
}
}//end while
hr = ADsFreeEnumerator(pEnum);
CString strUserNum;
strUserNum.Format("User Number:%d",nUserNum);
AfxMessageBox(strUserNum);
CoUninitialize();
}函数工作环境声明如下:
Windows NT/2000 or later: Requires Windows 2000 or later (or Windows NT 4.0 SP6a or later with Active Directory Client Extension).
Windows 95/98/Me: Requires Windows 95/98 (with IE 4.01 or later and Active Directory Client Extension). Not supported on Windows Me.
Header: Declared in Adshlp.h.
Library: Use ActiveDS.Lib.