c\c++获取Windows的用户数量,用户信息

有些时候我们需要获取Windows下任务管理器的用户数量,用户的信息,如下图的c\c++获取Windows的用户数量,用户信息_第1张图片这时我们就没法直接用Windows提供的接口直接获取了,但无法用接口怎么办呢?我们可以用执行用户命令的方式(cmd执行的命令)获取,好,多的不说了,直接上代码。

#include  
#include
#pragma warning ( disable : 4996 )


using namespace std;
// 描述:execmd函数执行命令,并将结果存储到result字符串数组中   
// 参数:cmd表示要执行的命令  
// result是执行的结果存储的字符串数组  
// 函数执行成功返回1,失败返回0    
int execmd(char* cmd, char* result) {
char buffer[128];                         //定义缓冲区                          
FILE* pipe = _popen(cmd, "r");            //打开管道,并执行命令   
if (!pipe)
return 0;                      //返回0表示运行失败   


while (!feof(pipe)) {
if (fgets(buffer, 128, pipe)) {             //将管道输出到result中   
strcat(result, buffer);
}
}
_pclose(pipe);                            //关闭管道   
return 1;                                 //返回1表示运行成功   
}
char *getUserCount() {
int i = 0;
char result[1024 * 4] = "";
//定义存放结果的字符串数组   
const char *cmd = "query user";
char *cmd1 = new char[strlen(cmd) + 1];
strcpy(cmd1, cmd);
if (1 == execmd(cmd1, result)) {
printf("%s\n",result);
const char *d = " ,*";
char *p;
p = strtok(result, d);
printf(result);
while (p)
{
i++;
printf("%d==%s\n",i,p);
p = strtok(NULL, d);
}
}
int count = ((i - 6) + 1) / 7;
char userCou[] = "";
sprintf(userCou, "%d", count);
return userCou;
}
int main() {
char * aa = getUserCount();
cout << "在线用户个数:"<< aa << endl;
}




如下的结果:

c\c++获取Windows的用户数量,用户信息_第2张图片

你可能感兴趣的:(c/c++)