NetLocalGroupEnum这个函数是用来获取系统里的组的。这个组可以再mmc中的组策略中看到。
NET_API_STATUS NetLocalGroupEnum( LPCWSTR servername, DWORD level, LPBYTE* bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR resumehandle );
msdn上写的bufptr的结果应该是an array of LOCALGROUP_INFO_1 structures
这个结构的定义应该是这样的
typedef struct _LOCALGROUP_INFO_1 { LPWSTR lgrpi1_name; LPWSTR lgrpi1_comment; }按照我的理解(*bufptr)应该是一个 LOCALGROUP_INFO_1 指针数组。
但是呢,(*bufptr+4)->lgrpi1_name的内容的竟然是(*bufptr+4)->lgrpi1_comment,(*bufptr+8)->lgrpi1_name才是下一个组的组名。
不知道哪里理解错了。
然后打印comment时候出来了好多问号。wprintf默认是不能直接打印的,需要加一句 setlocale(LC_ALL, "chs");
这个我觉得http://blog.csdn.net/applehoney/article/details/2228370讲得不错,不多解释了。
LPBYTE 其实是unsigned char*
LPDWORD 其实是unsigned int*
LPCWSTR 其实是WCHAR*
unsigned char*与LPCWSTR,也就是WCHAR*的时候,可以这么弄:
WCHAR* name = _T("test");
MultiByteToWideChar()总觉得用起来有点麻烦。不过如果要处理的是变量名,就需要用这个函数。
刚开始弄这些不明意义的数据类型还真是一头雾水啊- -||||