c\c++获取Windows的用户数量,用户信息
有些时候我们需要获取Windows下任务管理器的用户数量,用户的信息,如下图的这时我们就没法直接用Windows提供的接口直接获取了,但无法用接口怎么办呢?我们可以用执行用户命令的方式(cmd执行的命令)获取,好,多的不说了,直接上代码。
#include <iostream>
#include<string>
#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;
}
如下的结果: