看到一篇枚举所有用户的代码。感觉比较繁琐。找了个比较简单清晰的方法如下:
相关函数代码:
#pragma code("USEGEN.DLL")
#include "usegenap.h"
#pragma code()
CMN_ERROR err;
DM_PROJECT_INFO ProjectInfo;
DWORD dwCount = 0;
PVOID userdata=0;
PWGEN_USERINFO lpUserInfo;
BOOL CALLBACK enum_user(LPWGEN_USERINFO lpUserInfo, PVOID lpUser);
memset(&ProjectInfo, 0, sizeof(DM_PROJECT_INFO));
DMGetProjectInformation("***", &ProjectInfo, &err); \\"***"为wincc项目路径。
PWGENConnect(ProjectInfo.szDSNName, &err);
PWGENEnumUsers (&dwCount, enum_user, &userdata, &err);
PWGENDisconnect(&err);
*******************************************************************
回调函数:
#include "apdefap.h"
#include "usegenap.h"
BOOL enum_user(LPTSTR lpUserInfo, PVOID lpUser)
{
PWGEN_USERINFO * pCls;
pCls = (LPWGEN_USERINFO*)lpUserInfo;
printf("Group: %s\r\n", pCls->group);
printf("User: %s\r\n", pCls->login);
return TRUE;
}
————————————————————————————————
测试结果;
Group: 管理员组
User: 管理员
Group: 管理员组
User: ldh
Group: 管理员组
User: wlq
Group: user
User: zzj
Group: user
User: www