社区
C++ 语言
帖子详情
如何获得本地的所有用户?
yunshiyu
2005-07-29 05:45:40
就是获得计算机管理里面的所有用户:Administrator、Guest、SQLDebugger、user等
应该有个API函数,但我没有找到,有谁知道吗?
...全文
151
3
打赏
收藏
如何获得本地的所有用户?
就是获得计算机管理里面的所有用户:Administrator、Guest、SQLDebugger、user等 应该有个API函数,但我没有找到,有谁知道吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
erwinrommel
2005-07-30
打赏
举报
回复
学习贴,收藏,很少看到5星级人物回帖啊,呵呵!
masterz
2005-07-29
打赏
举报
回复
#include "stdafx.h"
#import "c:\program files\common files\system\ado\msado15.dll" rename
("EOF", "adoEOF")
#include <fstream>
#include <sstream>
#include <Iads.h>
#include <comdef.h>
#include <tchar.h>
#include <stdio.h>
#include <Adshlp.h>
#pragma comment(lib,"ActiveDS")
#pragma comment(lib,"adsiid")
#include <atlbase.h>
#include <iostream>
void print_property(HRESULT hr,_bstr_t& property_name,
_variant_t& property_value)
{
if(FAILED(hr))
{
std::cout<<"Failed to get property: "<<(LPCTSTR)property_name
<<std::endl;
return;
}
if(VT_BSTR == property_value.vt)
{
std::cout<<(LPCTSTR)property_name<<":"
<<(LPCTSTR)(_bstr_t)property_value<<std::endl;
}
if(VT_I4 == property_value.vt)
{
std::cout<<(LPCTSTR)property_name<<":"
<<(long)property_value<<std::endl;
}
if(VT_VARIANT|VT_ARRAY )
{
SAFEARRAY* psa = property_value.parray;
VARIANT* varArray=NULL;
SafeArrayAccessData(psa,(VOID**)&varArray);
UINT uDim = SafeArrayGetDim(psa);
if(1==uDim)
{
long lLbound,lRbound;
SafeArrayGetLBound(psa,1,&lLbound);
SafeArrayGetUBound(psa,1,&lRbound);
std::cout<<(LPCTSTR)property_name<<":"<<std::endl;
for(long i=lLbound;i<=lRbound;i++)
{
if(varArray[i].vt==VT_BSTR)
{
_bstr_t bstmp(varArray[i].bstrVal,true);
std::cout<<(LPCTSTR)(bstmp)<<std::endl;
}
}
SafeArrayUnaccessData(psa);
}
}
}
HRESULT get_from_current_domain(_bstr_t sFilter)
{//Tested on Windows 2000 Professional SP4, VC6 SP6
CComPtr<IADs> pRoot;
HRESULT hr = S_OK;
_bstr_t object_name = "LDAP://rootDSE";
hr = ADsGetObject(object_name,IID_IADs,(void**)&pRoot);
if(SUCCEEDED(hr))
{
BSTR bstr = NULL;
_variant_t property_value;
_bstr_t property_name = "defaultNamingContext";
hr=pRoot->Get(property_name,&property_value);
print_property(hr,property_name,property_value);
if(SUCCEEDED(hr))
{
CComPtr<IADs> pDomain;
_bstr_t ldap_domain = "LDAP://";
ldap_domain += (_bstr_t)property_value;
hr = ADsGetObject(ldap_domain,IID_IADs,(void**)&pDomain);
if(FAILED(hr))
{
return hr;
}
hr = pDomain->get_ADsPath(&bstr);
if(FAILED(hr))
return hr;
_bstr_t sBase;
sBase = "<";
sBase += bstr;
sBase += ">";
SysFreeString(bstr);
bstr = NULL;
//_bstr_t sFilter = "(&(objectCategory=person)(objectClass=user))";
_bstr_t sAttribs = "name";
_bstr_t sDepth = "subTree";
_bstr_t sQuery = sBase + ";" + sFilter + ";" + sAttribs
+ ";" + sDepth;
ADODB::_ConnectionPtr pConnection;
pConnection.CreateInstance( __uuidof( ADODB::Connection ) );
_bstr_t bstrEmpty;
pConnection->Open("Data Source=Active Directory
Provider;Provider=ADsDSOObject",
bstrEmpty, bstrEmpty, -1 );
ADODB::_RecordsetPtr pRecordset;
_variant_t records_affected;
pRecordset = pConnection->Execute(sQuery,&records_affected,0);
while(!pRecordset->adoEOF)
{
std::cout<<(LPCTSTR)(_bstr_t)pRecordset->Fields->Item["name"]->Val
ue
<<std::endl;
pRecordset->MoveNext();
}
if(pRecordset->State)
{
pRecordset->Close();
std::cout<<"Close recordset"<<std::endl;
}
if(pConnection->State)
{
pConnection->Close();
std::cout<<"Close connection"<<std::endl;
}
}
}
else
{
std::cout<<"failed to get object:"<<(LPCTSTR)object_name
<<std::endl;
}
return ERROR_SUCCESS;
}
HRESULT get_all_users()
{
std::cout<<"Get all users of current domain"<<std::endl;
return
get_from_current_domain("(&(objectCategory=person)(objectClass=user))"
);
}
HRESULT get_all_computers()
{
std::cout<<"Get all computers of current domain"<<std::endl;
return get_from_current_domain("(&(objectCategory=computer))");
}
int main(int argc, char* argv[])
{
CoInitialize(NULL);
get_all_users();
get_all_computers();
CoUninitialize();
return 0;
}
OpenHero
2005-07-29
打赏
举报
回复
system()命令有
获得
本地的ip地址和
用户
名
void CGetIpDlg::OnQuery() { char wsHostName[128]; // 存储主机名 if (gethostname(wsHostName, 128) == 0)
C#
获得
本地计算机名称和登录
用户
名
程序运行过程中有时候要调用本地计算机的信息,这个时候我们可以通过 System.Environment 来取得相应的信息。 如: System.Environment.MachineName //本地计算机名 System.Environment.UserName //本地计算机登录名
C#【系统信息篇】
获得
本地计算机名称和登录
用户
名
获得
本地计算机名称和登录
用户
名
提升域
用户
帐户在本地计算机上的权限
工作在域模型下"domain users"组的
用户
,经常会因为没有写入权限等原因造成工作上的不便,应老同事需求具体说下方法,以达到自己动手,丰衣足食的目的。 要达到“我的电脑我做主”只要提升帐户在本地计算机上的权限就好了,"domain users"组的
用户
默认在本地
用户
组的"users"里,本地
用户
组"administrators"里默认只有"administrator"...
Windows Server 2012 AD DS环境下域
用户
自动加入本地管理员组
刚加入域控,需求:域
用户
加入域之后,此
用户
的域账号自动加入本地管理员组; 我们的Server2012是一台域控制器,然后再找一台Win 7做客户机;把域
用户
加入本地管理员组,使用的就是:
用户
配置首选项中“本地
用户
和组”。用于将登录帐号自动加入本地管理员组的场合。或者是使用计算机配置首选项中“本地
用户
和组”,用在将重要的域组加入客户端本地管理员组。 我们看一下具体设置: 使得
用户
配置首选项“本地
用户
...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章