1. 程式人生 > >c\c++獲取Windows的使用者數量,使用者資訊

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;
}

如下的結果: