我希望使用NetGroupGetUsers
函数获取组的用户。
DWORD dwError = 0;
NET_API_STATUS nStatus;
LPDWORD entriesread=0;
LPDWORD totalentries=0;
LPBYTE *buff;
nStatus=NetGroupGetUsers(NULL,L"Users",0,buff,MAX_PREFERRED_LENGTH,
entriesread,totalentries,NULL);
当我使用这个时,我得到了这个错误;
xC0000005: Access violation reading location 0xffffffffffffffff.
如何在工作时阅读buff?我也尝试了这个;
GROUP_USERS_INFO_0 *buff;
nStatus=NetGroupGetUsers(NULL,L"Users",0,(LPBYTE*)&buff,MAX_PREFERRED_LENGTH,
entriesread,totalentries,NULL);
但发生了同样的错误。
编辑:nStatus值为NERR_GroupNotFound
我认为访问冲突的原因是尝试读取实际未设置的buff。
编辑2:我使用了这个函数NetLocalGroupGetMembers
。现在它取得了成功,但buff->grui0_name
毫无意义。有一个名为“ali”的用户,但buff->grui0_name
的值只是“d”。我做错了什么?
最后一个代码;
LPCWSTR TargetGroup = L"group1";
DWORD dwError = 0;
NET_API_STATUS stat;
GROUP_USERS_INFO_0 *buff;
LPDWORD entriesread=new DWORD;
LPDWORD totalentries=new DWORD;
stat=NetGroupGetUsers(NULL,TargetGroup,0,(LPBYTE *)&buff,MAX_PREFERRED_LENGTH,
entriesread,totalentries,NULL);
for EDIT 2;
stat=NetLocalGroupGetMembers(NULL,TargetGroup,0,(LPBYTE *)&buff,
MAX_PREFERRED_LENGTH,entriesread,totalentries,NULL);
请帮忙......
答案 0 :(得分:1)
您尚未为buff
分配任何内存。你应该写
GROUP_USERS_INFO_0 *buff;
... NetGroupGetUsers(..., (LPBYTE*)&buff, ...);
否则你告诉NetGroupGetUsers将结果写入垃圾位置。请注意,bufptr
参数记录为[out]
。这意味着调用者有责任指定结果的位置。 There's more to calling a function than just getting the types to match
我很惊讶你没有得到编译器的“使用初始化变量”警告。
答案 1 :(得分:1)
以下是不包含新版本的版本:
LPCWSTR TargetGroup = L"group1";
NET_API_STATUS stat;
LOCALGROUP_MEMBERS_INFO_1 *buff;
DWORD entriesread;
DWORD totalentries;
stat = NetLocalGroupGetMembers(NULL,TargetGroup,1,(LPBYTE *)&buff,
MAX_PREFERRED_LENGTH,&entriesread,&totalentries,NULL);
wprintf(buff->lgrmi1_name);
答案 2 :(得分:0)
请通过此链接(http://www.codeguru.com/forum/archive/index.php/t-116634.html)供您参考。
答案 3 :(得分:0)
LPCWSTR TargetGroup = L"group1";
NET_API_STATUS stat;
LOCALGROUP_MEMBERS_INFO_1 *buff;
LPDWORD entriesread=new DWORD;
LPDWORD totalentries=new DWORD;
stat=NetLocalGroupGetMembers(NULL,TargetGroup,1,(LPBYTE *)&buff,
MAX_PREFERRED_LENGTH,entriesread,totalentries,NULL);
wprintf(buff->lgrmi1_name);
此代码现在运行良好。感谢大家。