wmi收集系统信息 发送到服务器打印

#include "WMIManager.h"
#include <vector>
#include <string>
#include <boost/thread/thread.hpp>
#include <boost/array.hpp>
#include <boost/asio.hpp>

/**************************************************************
技术博客
http://www.cnblogs.com/itdef/

技术交流群
群号码:324164944

欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
**************************************************************/

using namespace DEF;
using boost::asio::ip::tcp;

void WMIManager::Transfer()
{
    tcp::resolver resolver(io_);
    tcp::resolver::query query("127.0.0.1", "8893");
    tcp::resolver::iterator iterator = resolver.resolve(query);
    try {
        tcp::socket s(io_);
        boost::asio::connect(s, iterator);

        while (1)
        {
            std::unique_lock<std::mutex>  lck(mtx_);
            while (!ready_) // 如果标志位不为 true, 则等待...
                cv_.wait(lck);
            while (!strVec_.empty())
            {
                std::cout << strVec_.back() << std::endl;
                size_t n = boost::asio::write(s, boost::asio::buffer((strVec_.back()).c_str(), (strVec_.back()).size()+1));
                strVec_.pop_back();
            }
            ready_ = false;
        }
    }
    catch (std::exception& e)
    {
        std::cerr << "Exception: " << e.what() << "\n";
    }

}

bool WMIManager::Start()
{
    if (false == wmiInfo_.Init(L"ROOT\\CIMV2"))
    {
        return false;
    }
    boost::thread t(&WMIManager::Transfer,this);
    t_.async_wait(boost::bind(&WMIManager::Loop,this,
        boost::asio::placeholders::error, &t_, &wmiInfo_));

    io_.run();
    t.join();
    return true;
}

void WMIManager::Loop(const boost::system::error_code&  e,
    boost::asio::deadline_timer* t, WMIInfo* wmiInfo)
{
    if ( wmiInfo->QueryWin32Process(L"WQL", L"SELECT * FROM Win32_Process", strVec_) )
    {
        //  transfer std::vector<std::string>
    }
    t->expires_at(t->expires_at() + boost::posix_time::seconds(1));
    t->async_wait(boost::bind(&WMIManager::Loop, this,
        boost::asio::placeholders::error, t, wmiInfo));
}

代码片段

具体见

http://www.oschina.net/code/snippet_614253_56135

时间: 2024-11-05 20:28:10

wmi收集系统信息 发送到服务器打印的相关文章

10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

/**10.使用TCP协议完成一个客户端一个服务器.客户端从键盘输入读取一个字符串,发送到服务器. 服务器接收客户端发送的字符串,反转之后发回客户端.客户端接收并打印. * 客户端*/ import java.io.*; import java.net.*; public class Test10_Client { public static void main(String[] args) throws Exception { Socket s = new Socket("192.168.0.

TCP 同步传输:客户端发送,服务器段接收

1.服务器端程序 可以在TcpClient上调用GetStream()方法来获的链接到远程计算机的网络流NetworkStream.当在客户端调用时,他获的链接服务器端的流:当在服务器端调用时,他获得链接客户端的流. class Program { static void Main(string[] args) { const int BufferSize = 8192;//缓存大小 Console.WriteLine("server is running ..."); IPAddre

捕获软件异常,再次运行时发送到服务器

在我们开发的app中, 不可避免的, 有时候用户使用软件会崩溃.  我们就需要捕获异常, 可以在入口类中加入相应的代码, 可以在每次用户打开程序的时候, 检查一下沙盒中是否有崩溃日志, 如果有, 可以发送给服务器, 方便改进软件. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindo

收集尝试登录到服务器的密码尝试失败的ip和次数

#!/bin/bash #检测登录到服务器的ip尝试次数 #Date:2017年 08月 01日 星期二 18:38:05 CST #通过定义次数,来加入到黑名单限制某个ip的登录! #收集尝试登录到服务器的密码尝试失败的ip和次数 cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2"="$1;}' > /login/try.txt #定义3次 DEFINE=&

Python学习教程(Python学习路线):python—收集系统信息

Python学习教程(Python学习路线):python—收集系统信息  1.1 hashlib模块使用 获取文件的MD5值,和shell下的MD5sum一样 方法一:先实例化一个对象,再使用update做校验,最后十六进制查看hexdigest In [3]: import hashlib In [5]: md5 = hashlib.md5 In [6]: md5.update("a") In [7]: md5.hexdigest Out[7]: '0cc175b9c0f1b6a8

1.4socket服务器打印信息的四种不同方式()

方式一 socker 服务器 # -*- coding: utf-8 -*- import sys,os,multiprocessing from socket import * serverHost = 'localhost' serverPort = 50007 def initListenerSocket(port=port): sock = socket(AF_INET,SOCK_STREAM) #创建TCP对象 sock.bind(('',port)) #绑定端口 sock.liste

[iOS 多线程 &amp; 网络 - 2.0] - 发送接收 服务器信息

A.搭建java服务器 使用eclipse.tomcat和struts2框架搭建一个简单的服务器 1.准备好合适版本的JDK.eclipse EE.tomcat.struts2 框架包 2.配置JDK和tomcat系统变量 3.在eclipse中创建一个Dynamic Web Project, 勾选创建web.xml 4.解压一个struts2中的app范例,参考其中的web.xml和struts.xml配置 5.配置tomcat,注意配置正确的服务器的路径和发布路径,不要使用默认的eclips

使用WMI和性能计数器监控远程服务器权限设置

应用场景:在web服务器中,通过.NET编码使用WMI查询远程服务器的一些硬件配置信息,使用性能计数器查询远程机器的运行时资源使用情况.在网上没有找到相关的东西,特记录与大家共享. 将web服务器和所有的远程服务器添加的同一个域中,并创建一个域账户. 在web站点的web.config中添加如下配置 将域账户添加到Performance Monitor Users,使域账户具有远程访问性能计数器的权限. 2. 打开WMI权限设置 安全 标签 3. 选中CIMV2,添加 域账户 ,并选中 启用账户

angular2^ typescript 将 文件和Json数据 合并发送到服务器(1.客户端处理)

首先介绍下框架基本流程   (web > webservice  [前端架构] ) > (nodejs [ 数据中转站 ]) >(api [后台接口]) --web (html  angular 框架) --webservice(angular 中 编写的service文件 ,在此处原本可以使用 [ng2-file-upload]插件 文件+参数 合并提交,但是在我的项目中  请求需要统一提交,所以在此处 使用第三方插件不太适用 所以自己编写了XMLHttpRequest 进行 form