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;
}
如下的結果: