获取域用户 如何获取其他域中用户名字。通过编程实现。急急!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说的应该是工作名吧.你用下面的GetGroup()能获得局域网中的工作组名,不知是不是你要的域名.OnSelchangedTreeNetcomputer(..)是一个树控件的SELCHANGE事件,你参考and GetStartComputer(..);//------------------------Get all groupvoid CInternet::GetGroup(){ HANDLE hEnum; DWORD dwResult,dwResultEnum; DWORD cbBuffer=16384; DWORD cEntries=-1; LPNETRESOURCE lpnrLocal; DWORD i=0; CString str; try { //------------------------------------------First dwResult=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, 0, &hEnum ); if(dwResult != NO_ERROR) throw; lpnrLocal=(LPNETRESOURCE)GlobalAlloc(GPTR,cbBuffer); ZeroMemory(lpnrLocal,cbBuffer); dwResultEnum=WNetEnumResource(hEnum, &cEntries, lpnrLocal, &cbBuffer ); if(dwResultEnum != NO_ERROR) throw; WNetCloseEnum(hEnum); //------------------------------------------ //------------------------------------------Second dwResult=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, lpnrLocal, &hEnum ); if(dwResult != NO_ERROR) throw; ZeroMemory(lpnrLocal,cbBuffer); cEntries=-1; dwResultEnum=WNetEnumResource(hEnum, &cEntries, lpnrLocal, &cbBuffer ); if(dwResultEnum != NO_ERROR) throw; if(m_treeNetComputer.GetCount()>0) m_treeNetComputer.DeleteAllItems(); HTREEITEM hParent=TVI_ROOT; for(i=0;i<cEntries;i++) { m_treeNetComputer.InsertItem(lpnrLocal[i].lpRemoteName, 0, 0, hParent ); } //------------------------------------------ GlobalFree((HGLOBAL)lpnrLocal); dwResult=WNetCloseEnum(hEnum); if(dwResult != NO_ERROR) throw; }//try catch(...) { MessageBox("ERROR"); return; }}//------------------------//----------------------------------Add 2003-08-17void CInternet::GetStartComputer(HTREEITEM itemGroup){ HANDLE hEnum; DWORD dwResult,dwResultEnum; DWORD cbBuffer=16384; DWORD cEntries=-1; LPNETRESOURCE lpnrLocal; DWORD i=0; //InsertItem tree. CString str; char buf[MAX_PATH]; NETRESOURCE ns; ns.dwScope=RESOURCE_GLOBALNET; ns.dwType=RESOURCETYPE_ANY; ns.dwDisplayType=RESOURCEDISPLAYTYPE_DOMAIN; ns.dwUsage=RESOURCEUSAGE_CONTAINER; ns.lpLocalName=NULL; //ns.lpRemoteName=buf; ns.lpProvider=NULL; ns.lpComment=NULL; HTREEITEM nAppend=itemGroup; CString itemText; //tree CString comName; //Computer name; if (m_treeNetComputer) { try { //-----------------------------------LOOP itemText=m_treeNetComputer.GetItemText(itemGroup); sprintf(buf,"%s",itemText); ns.lpRemoteName=buf; dwResult=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, &ns, &hEnum ); if(dwResult != NO_ERROR) throw; lpnrLocal=(LPNETRESOURCE)GlobalAlloc(GPTR,cbBuffer); ZeroMemory(lpnrLocal,cbBuffer); dwResultEnum=WNetEnumResource(hEnum, &cEntries, lpnrLocal, &cbBuffer ); if(dwResultEnum != NO_ERROR) throw; //-----------------------------------InsertItem tree for(i=0;i< cEntries;i++) { comName=lpnrLocal[i].lpRemoteName; m_treeNetComputer.InsertItem(LPCTSTR(comName),1,1,nAppend); }//for i //----------------------------------- GlobalFree((HGLOBAL)lpnrLocal); dwResult=WNetCloseEnum(hEnum); if(dwResult != NO_ERROR) throw; }//try catch(...) { MessageBox("ERROR"); return; }//catch }//if m_treeNetComputer.GetCount>0}//-----------------------------------//------------------------------------------------------Add 2003-08-17BOOL CInternet::GetPCNameByIP(CString strIP, CString& strPCName){ HOSTENT *pHe; unsigned long addr; WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != NO_ERROR ) return FALSE; addr=inet_addr(strIP); if (pHe=gethostbyaddr((char*)&addr,4,AF_INET)) { strPCName.Format("%s",pHe->h_name); return TRUE; } else return FALSE;}BOOL CInternet::GetIPByPCName(CString strPCName, CString &strIP){ HOSTENT *pHe; struct in_addr in; WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != NO_ERROR ) return FALSE; if (pHe=gethostbyname(strPCName)) { in.S_un.S_addr=*((unsigned long*)pHe->h_addr_list[0]); char* buf=inet_ntoa(in); strIP.Format("%s",buf); return TRUE; } else return FALSE;}//-----------------------------------------------------------------void CInternet::OnSelchangedTreeNetcomputer(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here HTREEITEM selItem; HTREEITEM nParent; CString selItemText; selItem=m_treeNetComputer.GetSelectedItem(); if (selItem) { nParent=m_treeNetComputer.GetParentItem(selItem); //-------------------------------------------//Group if(!nParent) { BOOL bHaveChild=m_treeNetComputer.ItemHasChildren(selItem); if (!bHaveChild) GetStartComputer(selItem); m_treeNetComputer.Expand(selItem,TVE_EXPAND); //Add 2003-08-17 return; } //-------------------------------------------//Computer nParent=m_treeNetComputer.GetParentItem(nParent); if (!nParent) { selItemText=m_treeNetComputer.GetItemText(selItem); int hFind; hFind=selItemText.Find("\\",0); while(hFind>=0) { selItemText=selItemText.Mid(hFind+1); hFind=selItemText.Find("\\",0); } //-------------------------Get IP Address by PCName CString strPCName=selItemText; CString strIP; BOOL bResult=GetIPByPCName(strPCName,(CString&)strIP); if(bResult) { m_host_pcName=strPCName; //m_host_ip=strIP; m_ctrlIP.SetWindowText(strIP); UpdateData(FALSE); } //------------------------------------------------- }//if selItem }//if *pResult = 0;} 我说的是这样的: 假如我在域A中,在网络中有一个不B域, 并且A,B同属一个forest域, 现在我想得到B域中的所以用户名,以及Group。 应该怎样办?怎样用程序实现?A,B域是 信任域 和 非信任域两种情况时 ,处理的情况一样吗?谢谢!!急恢复!!! 急问,vc 6一个formview上面可以放置的控件数量是不是有限制? 多线程访问同一个数据库,需要加锁么? 带有上下增/减箭头按钮的编辑框如何实现? 如何用键盘钩子挂起及唤醒一个可执行程序? 如何更改工具栏颜色? 求一个,不用派生CListCtrl(不是listview)可以排序中文,英文,整数的代码 关于屏蔽系统热键问题(能否用底层键盘钩子实现) 关于注册表,文件操作,文件读写的一些基本问题. 大家来讨论一下“软件打包”的问题,UP也有分哈~~~~~~~~~~ API拦截疑问 关于DAO发布的问题 在线等:如何将鼠标移动到指定的位置
你用下面的GetGroup()能获得局域网中的工作组名,不知是不是你要的域名.OnSelchangedTreeNetcomputer(..)是一个树控件的SELCHANGE事件,
你参考
and
GetStartComputer(..);
//------------------------Get all group
void CInternet::GetGroup()
{
HANDLE hEnum;
DWORD dwResult,dwResultEnum;
DWORD cbBuffer=16384;
DWORD cEntries=-1; LPNETRESOURCE lpnrLocal;
DWORD i=0;
CString str; try
{
//------------------------------------------First
dwResult=WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
0,
&hEnum
); if(dwResult != NO_ERROR)
throw; lpnrLocal=(LPNETRESOURCE)GlobalAlloc(GPTR,cbBuffer);
ZeroMemory(lpnrLocal,cbBuffer);
dwResultEnum=WNetEnumResource(hEnum,
&cEntries,
lpnrLocal,
&cbBuffer
);
if(dwResultEnum != NO_ERROR)
throw; WNetCloseEnum(hEnum);
//------------------------------------------
//------------------------------------------Second
dwResult=WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
lpnrLocal,
&hEnum
); if(dwResult != NO_ERROR)
throw; ZeroMemory(lpnrLocal,cbBuffer);
cEntries=-1; dwResultEnum=WNetEnumResource(hEnum,
&cEntries,
lpnrLocal,
&cbBuffer
);
if(dwResultEnum != NO_ERROR)
throw; if(m_treeNetComputer.GetCount()>0)
m_treeNetComputer.DeleteAllItems(); HTREEITEM hParent=TVI_ROOT; for(i=0;i<cEntries;i++)
{
m_treeNetComputer.InsertItem(lpnrLocal[i].lpRemoteName,
0,
0,
hParent
);
} //------------------------------------------
GlobalFree((HGLOBAL)lpnrLocal); dwResult=WNetCloseEnum(hEnum);
if(dwResult != NO_ERROR)
throw;
}//try
catch(...)
{
MessageBox("ERROR");
return;
}}
//------------------------//----------------------------------Add 2003-08-17
void CInternet::GetStartComputer(HTREEITEM itemGroup)
{
HANDLE hEnum;
DWORD dwResult,dwResultEnum;
DWORD cbBuffer=16384;
DWORD cEntries=-1; LPNETRESOURCE lpnrLocal;
DWORD i=0; //InsertItem tree.
CString str;
char buf[MAX_PATH]; NETRESOURCE ns;
ns.dwScope=RESOURCE_GLOBALNET;
ns.dwType=RESOURCETYPE_ANY;
ns.dwDisplayType=RESOURCEDISPLAYTYPE_DOMAIN;
ns.dwUsage=RESOURCEUSAGE_CONTAINER;
ns.lpLocalName=NULL;
//ns.lpRemoteName=buf;
ns.lpProvider=NULL;
ns.lpComment=NULL; HTREEITEM nAppend=itemGroup; CString itemText; //tree
CString comName; //Computer name; if (m_treeNetComputer)
{
try
{
//-----------------------------------LOOP
itemText=m_treeNetComputer.GetItemText(itemGroup);
sprintf(buf,"%s",itemText); ns.lpRemoteName=buf; dwResult=WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
&ns,
&hEnum
); if(dwResult != NO_ERROR)
throw; lpnrLocal=(LPNETRESOURCE)GlobalAlloc(GPTR,cbBuffer);
ZeroMemory(lpnrLocal,cbBuffer); dwResultEnum=WNetEnumResource(hEnum,
&cEntries,
lpnrLocal,
&cbBuffer
);
if(dwResultEnum != NO_ERROR)
throw;
//-----------------------------------InsertItem tree
for(i=0;i< cEntries;i++)
{
comName=lpnrLocal[i].lpRemoteName;
m_treeNetComputer.InsertItem(LPCTSTR(comName),1,1,nAppend); }//for i
//-----------------------------------
GlobalFree((HGLOBAL)lpnrLocal); dwResult=WNetCloseEnum(hEnum);
if(dwResult != NO_ERROR)
throw; }//try catch(...)
{
MessageBox("ERROR");
return;
}//catch }//if m_treeNetComputer.GetCount>0}
//-----------------------------------//------------------------------------------------------Add 2003-08-17
BOOL CInternet::GetPCNameByIP(CString strIP, CString& strPCName)
{
HOSTENT *pHe;
unsigned long addr;
WORD wVersionRequested; WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != NO_ERROR )
return FALSE; addr=inet_addr(strIP);
if (pHe=gethostbyaddr((char*)&addr,4,AF_INET))
{
strPCName.Format("%s",pHe->h_name);
return TRUE;
}
else
return FALSE;
}BOOL CInternet::GetIPByPCName(CString strPCName, CString &strIP)
{
HOSTENT *pHe;
struct in_addr in;
WORD wVersionRequested; WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != NO_ERROR )
return FALSE; if (pHe=gethostbyname(strPCName))
{
in.S_un.S_addr=*((unsigned long*)pHe->h_addr_list[0]); char* buf=inet_ntoa(in);
strIP.Format("%s",buf);
return TRUE;
}
else
return FALSE;
}
//-----------------------------------------------------------------void CInternet::OnSelchangedTreeNetcomputer(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here HTREEITEM selItem;
HTREEITEM nParent;
CString selItemText; selItem=m_treeNetComputer.GetSelectedItem(); if (selItem)
{
nParent=m_treeNetComputer.GetParentItem(selItem);
//-------------------------------------------//Group
if(!nParent)
{
BOOL bHaveChild=m_treeNetComputer.ItemHasChildren(selItem);
if (!bHaveChild)
GetStartComputer(selItem);
m_treeNetComputer.Expand(selItem,TVE_EXPAND); //Add 2003-08-17 return;
}
//-------------------------------------------//Computer
nParent=m_treeNetComputer.GetParentItem(nParent);
if (!nParent)
{
selItemText=m_treeNetComputer.GetItemText(selItem);
int hFind;
hFind=selItemText.Find("\\",0);
while(hFind>=0)
{
selItemText=selItemText.Mid(hFind+1);
hFind=selItemText.Find("\\",0);
}
//-------------------------Get IP Address by PCName
CString strPCName=selItemText;
CString strIP;
BOOL bResult=GetIPByPCName(strPCName,(CString&)strIP); if(bResult)
{
m_host_pcName=strPCName;
//m_host_ip=strIP;
m_ctrlIP.SetWindowText(strIP);
UpdateData(FALSE);
}
//-------------------------------------------------
}//if selItem
}//if *pResult = 0;
}
我说的是这样的: 假如我在域A中,在网络中有一个不B域, 并且A,B同属一个forest域, 现在我想得到B域中的所以用户名,以及Group。 应该怎样办?怎样用程序实现?A,B域是 信任域 和 非信任域两种情况时 ,处理的情况一样吗?
谢谢!!
急恢复!!!