大家来帮我一下好吧,

catac 2003-10-14 01:34:15
大家谁知道netgroupenum的例子呀,给我一个好吗,还有,我想在c盘的安全里加入一个组并设置他对c盘的权限怎么实现呀。
...全文
67 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
catac 2003-10-17
  • 打赏
  • 举报
回复
哪位大哥来帮帮我呀,等米下锅呢,多多感谢多多感谢。
catac 2003-10-15
  • 打赏
  • 举报
回复
自已也来顶一下。
catac 2003-10-15
  • 打赏
  • 举报
回复
呀,没人看呀,又后面来了,我再顶
constantine 2003-10-14
  • 打赏
  • 举报
回复
ding
catac 2003-10-14
  • 打赏
  • 举报
回复
还有对用户的权限问题有没有人知道呀
pepsi1980 2003-10-14
  • 打赏
  • 举报
回复
没法帮你调试了,因为宝兰打电话到公司说我们用D版:(..BCB卸载了,找个例子给你
取局域网的域名和域用户计算机的函数,:)

typedef struct
{
unsigned dwScope;
unsigned dwType;
unsigned dwDisplayType;
unsigned dwUsage;
String LocalName;
String RemoteName;
String Comment;
String Provider;
}TDomain;

void check(DWORD res)
{
if (res)
throw Exception(SysErrorMessage(res));
}

void GetDomain(TStrings *List)
{
TList *DomainList = new TList;
List->BeginUpdate();
try
{
List->Clear();
unsigned long bufsize = 8192;
void *buffer = new BYTE[bufsize];
try
{
HANDLE lphEnum = NULL;
check(WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER, NULL, &lphEnum));
unsigned long Count = 0xFFFFFFFF;
int res = WNetEnumResource(lphEnum, &Count, buffer, &bufsize);
if (ERROR_NO_MORE_ITEMS == res) return;
check(res);

TNetResource *p = (TNetResource*)buffer;
for (unsigned i = 0; i < Count; ++i)
{
TDomain *domain = (TDomain*)new BYTE[sizeof(TDomain)];
domain->dwScope = p->dwScope;
domain->dwType = p->dwType;
domain->dwDisplayType = p->dwDisplayType;
domain->dwUsage = p->dwUsage;
domain->LocalName = p->lpLocalName;
domain->RemoteName = p->lpRemoteName;
domain->Comment = p->lpComment;
domain->Provider = p->lpProvider;
DomainList->Add(domain);
++p;
}
check(WNetCloseEnum(lphEnum));

for (int i = 0; i < DomainList->Count; ++i)
{
TNetResource *p = (TNetResource*)DomainList->Items[i];
check(WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER, p, &lphEnum));
for(;;)
{
Count = 0xFFFFFFFF;
res = WNetEnumResource(lphEnum, &Count, buffer, &bufsize);
if (ERROR_NO_MORE_ITEMS == res) break;
check(res);
TNetResource *Resource = (TNetResource*)buffer;
for (unsigned j = 0; j < Count; ++j)
{
List->Add(Resource->lpRemoteName);
++Resource;
}
}
check(WNetCloseEnum(lphEnum));
}
}
__finally
{
free(buffer);
}
}
__finally
{
List->EndUpdate();
for (int i = 0; i < DomainList->Count; ++i)
free(DomainList->Items[i]);
delete DomainList;
}
}

void GetDomainUser(const String domain, TStrings *List)
{
List->BeginUpdate();
try
{
List->Clear();
unsigned long bufsize = 8192;
void *buffer = new BYTE[bufsize];
try
{
HANDLE lphEnum;
TNetResource Resource;
memset(&Resource, 0, sizeof(Resource));
Resource.lpRemoteName = domain.c_str();
Resource.dwDisplayType = RESOURCEDISPLAYTYPE_SERVER;
Resource.dwUsage = RESOURCEUSAGE_CONTAINER;
Resource.dwScope = RESOURCETYPE_DISK;
check(WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER, &Resource, &lphEnum));
for (;;)
{
unsigned long Count = 0xFFFFFFFF;
int res = WNetEnumResource(lphEnum, &Count, buffer, &bufsize);
if (ERROR_NO_MORE_ITEMS == res) return;
check(res);
TNetResource *p = (TNetResource*)buffer;
for (unsigned i = 0; i < Count; ++i)
{
List->Add(p->lpRemoteName + 2);
++p;
}
}
check(WNetCloseEnum(lphEnum));
}
__finally
{
delete []buffer;
}
}
__finally
{
List->EndUpdate();
}
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
GetDomain(ListBox1->Items);
}

void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
String domain = ListBox1->Items->Strings[ListBox1->ItemIndex];
GetDomainUser(domain, ListBox2->Items);
}
ljianq 2003-10-14
  • 打赏
  • 举报
回复
MSDN上去找。
catac 2003-10-14
  • 打赏
  • 举报
回复
我的这个函数有什么问题呀,为什么读不出来呀
void __fastcall TForm1::EnumGroup()
{
LPUSER_INFO_2 pBuf = NULL;
LPUSER_INFO_2 pTmpBuf;
DWORD dwLevel = 2;
DWORD dwPrefMaxLen=MAX_PREFERRED_LENGTH;
DWORD dwEntriesRead =0;
DWORD dwTotalEntries =0;
DWORD dwResumeHandle =0;
DWORD i;
DWORD dwTotalCount = 0;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
String username ;
do
{
nStatus = NetGroupEnum(PWideChar(pszServerName), dwLevel,(LPBYTE*)&pBuf,dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandle);
if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
{
if ((pTmpBuf = pBuf)!= NULL)
{
for (i = 0; (i < dwEntriesRead); i++)
{
// assert(pTmpBuf != NULL);//调试程序时常用的一个函数。
if (pTmpBuf == NULL) break;
username=WideCharToString(pTmpBuf->usri2_name) ;
userlist->Items->Add(username);
pTmpBuf++;
dwTotalCount++;
}
}
}
if (pBuf != NULL)
{
NetApiBufferFree(pBuf);
pBuf = NULL;
}
}
while (nStatus == ERROR_MORE_DATA); // end do
if (pBuf != NULL)
NetApiBufferFree(pBuf);
// return 0;

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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