VC怎样获取计算机加入的域

canghaixiaoao2 2009-10-17 08:24:46
请问各位高手,VC怎样获取计算机加入的域呢?谢谢!
...全文
226 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
canghaixiaoao2 2010-01-07
  • 打赏
  • 举报
回复
多谢!
an_bachelor 2009-10-18
  • 打赏
  • 举报
回复
Domain Browser
Using the IDsBrowseDomainTree interface, an application can display a domain browser dialog box and obtain the DNS name of the domain selected by the user. An application can also use the IDsBrowseDomainTree interface to obtain data about all domain trees and domains within a forest.

An instance of the IDsBrowseDomainTree interface is created by calling CoCreateInstance with the CLSID_DsDomainTreeBrowser class identifier as shown below.

The IDsBrowseDomainTree::SetComputer method can be used to specify which computer and credentials are used as the basis for retrieving the domain data. When SetComputer is called on a particular IDsBrowseDomainTree instance, IDsBrowseDomainTree::FlushCachedDomains must be called before SetComputer is called again.

The IDsBrowseDomainTree::BrowseTo method is used to display the domain browser dialog box. When the user selects a domain and clicks the OK button, the IDsBrowseDomainTree::BrowseTo returns S_OK and the ppszTargetPath parameter contains the name of the selected domain. When the name string is no longer required, the caller must free the string by calling CoTaskMemFree.


The following code example shows how to use the IDsBrowseDomainTree interface to display the domain browser dialog box.


[C++]#include <shlobj.h>
#include <dsclient.h>

void main(void)
{
HRESULT hr;

hr = CoInitialize(NULL);
if(FAILED(hr))
{
return;
}

IDsBrowseDomainTree *pDsDomains = NULL;

hr = ::CoCreateInstance( CLSID_DsDomainTreeBrowser,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDsBrowseDomainTree,
(void **)(&pDsDomains));

if(SUCCEEDED(hr))
{
LPOLESTR pstr;

hr = pDsDomains->BrowseTo( GetDesktopWindow(),
&pstr,
0);

if(S_OK == hr)
{
wprintf(pstr);
wprintf(L"\n");
CoTaskMemFree(pstr);
}

pDsDomains->Release();
}

CoUninitialize();
}

The IDsBrowseDomainTree::GetDomains method is used to obtain domain tree data. The domain data is supplied in a DOMAINTREE structure. The DOMAINTREE structure contains the size of the structure and the number of domain elements in the tree. The DOMAINTREE structure also contains one or more DOMAINDESC structures. The DOMAINDESC contains data about a single element in the domain tree, including child and sibling data. The siblings of a domain can be enumerated by accessing the pdNextSibling member of each subsequent DOMAINDESC structure. The children of the domain can be retrieved in a similar manner by accessing the pdChildList member of each subsequent DOMAINDESC structure.


The following code example shows how to obtain and access the domain tree data using the IDsBrowseDomainTree::GetDomains method.


[C++]#include <shlobj.h>
#include <dsclient.h>

/****************

PrintDomain()

*****************/

void PrintDomain(DOMAINDESC *pDomainDesc, DWORD dwIndentLevel)
{
DWORD i;

// Display the domain name.
for(i = 0; i < dwIndentLevel; i++)
{
wprintf(L" ");
}
wprintf(pDomainDesc->pszName);
wprintf(L"\n");
}

/*******************

WalkDomainTree()

********************/

void WalkDomainTree(DOMAINDESC *pDomainDesc, DWORD dwIndentLevel = 0)
{
DOMAINDESC *pCurrent;

// Walk through the current item and any siblings it may have.
for( pCurrent = pDomainDesc;
NULL != pCurrent;
pCurrent = pCurrent->pdNextSibling)
{
// Print the current domain name.
PrintDomain(pCurrent, dwIndentLevel);

// Walk the child tree, if one exists.
if(NULL != pCurrent->pdChildList)
{
WalkDomainTree(pCurrent->pdChildList,
dwIndentLevel + 1);
}
}
}


/*********

main()

**********/

int main(void)
{
HRESULT hr;
IDsBrowseDomainTree *pBrowseTree;

CoInitialize(NULL);

hr = CoCreateInstance(CLSID_DsDomainTreeBrowser,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDsBrowseDomainTree,
(void**)&pBrowseTree);

if(SUCCEEDED(hr))
{
DOMAINTREE *pDomTreeStruct;

hr = pBrowseTree->GetDomains(
&pDomTreeStruct,
DBDTF_RETURNFQDN);
if(SUCCEEDED(hr))
{
WalkDomainTree(&pDomTreeStruct->aDomains[0]);

hr = pBrowseTree->FreeDomains(&pDomTreeStruct);
}

pBrowseTree->Release();
}

CoUninitialize();
}


Send comments about this topic to Microsoft

Build date: 4/17/2008

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧