开源deskvideosys办公行为管理软件分为两部分,一个是服务器,一个是代理端,这里只分析代理端的代码,代理端(agent)的代码是用vc++写的,主要运行在windows操作系统上,目前实现的功能还不是太多,主要是收集了pc端的程序运行信息,具体的源码地址为https://github.com/boxiaojishu/deskvideosys有兴趣的同学可以下载下来,分析学习下, 是研究vc编程与windows机制不错的例子。
下面再说下具体代码:
下面这段代码实现了一个读取windows操作系统的硬件信息的函数
bool getDevcieInfo(char* cmd, list<string>& resultList) {
char buffer[BUFFER_SIZE];
bool ret = false;
FILE* pipe = _popen(cmd, "r"); //打开管道,并执行命令
if (!pipe)
return ret;
const char* name[20] = { "UUID","ProcessorId","SerialNumber" };
int len0 = strlen(name[0]), len1 = strlen(name[1]), len2 = strlen(name[2]);
bool isOk = false;
while (!feof(pipe))
{
if (fgets(buffer, BUFFER_SIZE, pipe))
{
if (strncmp(name[0], buffer, len0) == 0
|| strncmp(name[1], buffer, len1) == 0
|| strncmp(name[2], buffer, len2) == 0) // 能够正确获取信息
{
isOk = true;
continue;
}
if (isOk == false
|| strcmp("\r\n", buffer) == 0) //去掉windows无用的空行
{
continue;
}
ret = true;
resultList.push_back(string(buffer));
}
}
_pclose(pipe); // 关闭管道
return ret;
}