青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Hello World!

程序員那點事兒

首頁 新隨筆 聯系 聚合 管理
  20 Posts :: 6 Stories :: 0 Comments :: 0 Trackbacks

文章來源: http://wenku.baidu.com/view/64d5a356ad02de80d4d840a0.html 
大家平時在用類似魯大師之類軟件的時候,會看到魯大師之類的軟件能夠獲取到PC機的硬件的詳細信息,有時候自己在寫軟件的時候也需要獲取PC硬件的詳細信息,這個時候你會發現有的硬件信息通過系統的API函數無法獲取到或者獲取的不準確。所以這個時候就要通過WMI編程來獲取硬件信息了。WMI是windows操作系統用來管理軟件和硬件的核心。其它的不再多講了,下面來看最主要的,通過WMI獲取硬件信息。

整體來說,通過WMI獲取計算機硬件信息有以下幾個步驟

1、         CoInitializeEx函數初始化COM參數。因為WMI中的類都是基于COM技術的。

2、         CoInitializeSecurity函數初始化COM進程的安全,因為WMI的進程和應用程序進程不在同一個級別。

3、         獲取IWbemServices指針,通過函數IWbemLocator::ConnectServer獲取。

4、         通過CoSetProxyBlanket設置IWbemServices代理安全,使WMI服務可以模擬客戶端。

5、         使用IWbemServices進行WMI查詢,主要使用WQL語句。

6、         清理COM對象。

例子,            查詢操作系統信息的一個例子

  1 #include "stdafx.h"
  2 #include <iostream>
  3 using namespace std;
  4 #include <comdef.h>
  5 #include <Wbemidl.h>
  6 # pragma comment(lib, "wbemuuid.lib")
  7 int _tmain(int argc, _TCHAR* argv[])
  8 {
  9 
 10 
 11     HRESULT hres;
 12 
 13     // Initialize COM.
 14     hres =  CoInitializeEx(0, COINIT_MULTITHREADED); 
 15     if (FAILED(hres))
 16     {
 17         cout << "Failed to initialize COM library. " 
 18             << "Error code = 0x" 
 19             << hex << hres << endl;
 20         return 1;              // Program has failed.
 21     }
 22 
 23     // Initialize 
 24     hres =  CoInitializeSecurity(
 25         NULL,     
 26         -1,      // COM negotiates service                  
 27         NULL,    // Authentication services
 28         NULL,    // Reserved
 29         RPC_C_AUTHN_LEVEL_DEFAULT,    // authentication
 30         RPC_C_IMP_LEVEL_IMPERSONATE,  // Impersonation
 31         NULL,             // Authentication info 
 32         EOAC_NONE,        // Additional capabilities
 33         NULL              // Reserved
 34         );
 35     if (FAILED(hres))
 36     {
 37         cout << "Failed to initialize security. " 
 38             << "Error code = 0x" 
 39             << hex << hres << endl;
 40         CoUninitialize();
 41         return 1;          // Program has failed.
 42     }
 43 
 44     // Obtain the initial locator to Windows Management
 45     // on a particular host computer.
 46     IWbemLocator *pLoc = 0;
 47 
 48     hres = CoCreateInstance(
 49         CLSID_WbemLocator,             
 50         0, 
 51         CLSCTX_INPROC_SERVER, 
 52         IID_IWbemLocator, (LPVOID *) &pLoc);
 53 
 54     if (FAILED(hres))
 55     {
 56         cout << "Failed to create IWbemLocator object. "
 57             << "Error code = 0x"
 58             << hex << hres << endl;
 59         CoUninitialize();
 60         return 1;       // Program has failed.
 61     }
 62 
 63     IWbemServices *pSvc = 0;
 64 
 65     // Connect to the root\cimv2 namespace with the
 66     // current user and obtain pointer pSvc
 67     // to make IWbemServices calls.
 68 
 69     hres = pLoc->ConnectServer(
 70 
 71         _bstr_t(L"ROOT\\CIMV2"), // WMI namespace
 72         NULL,                    // User name
 73         NULL,                    // User password
 74         0,                       // Locale
 75         NULL,                    // Security flags                 
 76         0,                       // Authority       
 77         0,                       // Context object
 78         &pSvc                    // IWbemServices proxy
 79         );                              
 80 
 81     if (FAILED(hres))
 82     {
 83         cout << "Could not connect. Error code = 0x" 
 84             << hex << hres << endl;
 85         pLoc->Release();     
 86         CoUninitialize();
 87         return 1;                // Program has failed.
 88     }
 89 
 90     cout << "Connected to ROOT\\CIMV2 WMI namespace" << endl;
 91 
 92     // Set the IWbemServices proxy so that impersonation
 93     // of the user (client) occurs.
 94     hres = CoSetProxyBlanket(
 95 
 96         pSvc,                         // the proxy to set
 97         RPC_C_AUTHN_WINNT,            // authentication service
 98         RPC_C_AUTHZ_NONE,             // authorization service
 99         NULL,                         // Server principal name
100         RPC_C_AUTHN_LEVEL_CALL,       // authentication level
101         RPC_C_IMP_LEVEL_IMPERSONATE,  // impersonation level
102         NULL,                         // client identity 
103         EOAC_NONE                     // proxy capabilities     
104         );
105 
106     if (FAILED(hres))
107     {
108         cout << "Could not set proxy blanket. Error code = 0x" 
109             << hex << hres << endl;
110         pSvc->Release();
111         pLoc->Release();     
112         CoUninitialize();
113         return 1;               // Program has failed.
114     }
115 
116     IEnumWbemClassObject* pEnumerator = NULL;
117     hres = pSvc->ExecQuery(
118         bstr_t("WQL"), 
119         bstr_t("SELECT * FROM Win32_OperatingSystem"), //此處wql語句更改,實現不同的查詢
120         WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
121         NULL,
122         &pEnumerator);
123 
124     if (FAILED(hres))
125     {
126         cout << "Query for processes failed. "
127             << "Error code = 0x" 
128             << hex << hres << endl;
129         pSvc->Release();
130         pLoc->Release();     
131         CoUninitialize();
132         return 1;               // Program has failed.
133     }
134     else
135     { 
136         IWbemClassObject *pclsObj;
137         ULONG uReturn = 0;
138 
139         while (pEnumerator)
140         {
141             hres = pEnumerator->Next(WBEM_INFINITE, 1, 
142                 &pclsObj, &uReturn);
143 
144             if(0 == uReturn)
145             {
146                 break;
147             }
148 
149             VARIANT vtProp;
150 
151             // Get the value of the Name property
152             hres = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);//此處把Name改成對應的要獲取的屬性值
153             wcout << "Manufacturer Name : " << vtProp.bstrVal << endl;
154             VariantClear(&vtProp);
155         }
156 
157     }
158 
159     // Cleanup
160     // ========
161 
162     pSvc->Release();
163     pLoc->Release();     
164     CoUninitialize();
165     return 0;
166 }
167 

 

posted on 2013-01-24 21:54 hello wold! 閱讀(1731) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧洲午夜| 久久精品人人做人人综合| 欧美一区二区在线看| 日韩视频精品| 艳女tv在线观看国产一区| 亚洲精选国产| 一区二区国产精品| 午夜精品福利在线| 久久精品毛片| 麻豆成人小视频| 欧美高潮视频| 亚洲精品免费在线观看| 欧美a一区二区| 亚洲精品久久嫩草网站秘色| 9l国产精品久久久久麻豆| 亚洲欧美激情视频| 欧美制服丝袜第一页| 久久久久在线观看| 欧美成人a视频| 国产精品国色综合久久| 国产精品日韩专区| 国内免费精品永久在线视频| 国产日韩欧美精品一区| 亚洲高清不卡在线观看| 一区二区三区产品免费精品久久75 | 亚洲国产高清在线观看视频| 亚洲大胆在线| 一区二区激情视频| 久久精品视频导航| 欧美日韩高清不卡| 国产亚洲欧美日韩美女| 亚洲精品国偷自产在线99热| 香蕉久久国产| 噜噜噜在线观看免费视频日韩| 欧美夫妇交换俱乐部在线观看| 狠狠色狠狠色综合| 欧美日韩中文字幕在线视频| 国产亚洲亚洲| 日韩视频三区| 两个人的视频www国产精品| 亚洲人成网站777色婷婷| 欧美一级视频一区二区| 欧美日韩第一区| 在线观看久久av| 午夜精品一区二区三区电影天堂 | 欧美午夜精品久久久久久人妖| 国产伦精品免费视频| 亚洲国产高清在线| 欧美呦呦网站| 亚洲视频你懂的| 欧美激情bt| 一区二区在线观看av| 亚洲欧美日韩精品久久久| 欧美激情在线免费观看| 欧美在线不卡视频| 欧美激情国产日韩| 亚洲电影成人| 麻豆九一精品爱看视频在线观看免费| 亚洲在线视频免费观看| 欧美日韩在线免费视频| 亚洲另类在线视频| 亚洲第一区在线观看| 久久一区二区三区四区五区| 国产日产精品一区二区三区四区的观看方式 | 99在线热播精品免费| 欧美高清视频| 亚洲精品日韩一| 亚洲电影自拍| 欧美精品日日鲁夜夜添| 亚洲国产日韩欧美一区二区三区| 久久精品最新地址| 欧美一区二区视频免费观看| 国产精品区免费视频| 亚洲制服少妇| 亚洲一区二区成人在线观看| 国产精品国产一区二区| 欧美怡红院视频一区二区三区| 亚洲自啪免费| 国内免费精品永久在线视频| 久久久久青草大香线综合精品| 久久成人免费电影| 亚洲国产日本| 一本一本久久a久久精品牛牛影视| 欧美午夜免费电影| 久久精品72免费观看| 欧美亚洲免费电影| 永久免费精品影视网站| 欧美高清一区| 欧美日韩另类丝袜其他| 亚洲永久字幕| 久久精品午夜| 亚洲另类在线视频| 99国产欧美久久久精品| 国产目拍亚洲精品99久久精品| 久久av资源网站| 久久噜噜噜精品国产亚洲综合| 亚洲精品国产视频| 亚洲午夜精品视频| 黄色成人在线网站| 亚洲精品在线免费| 国产日韩精品在线| 欧美大片免费观看| 国产精品大片| 欧美福利专区| 国产麻豆日韩欧美久久| 欧美成人精品h版在线观看| 欧美日韩精品免费观看视频| 久久精品国产一区二区电影| 欧美激情国产精品| 久久av资源网站| 欧美精品日日鲁夜夜添| 久久久久久噜噜噜久久久精品| 免费在线视频一区| 午夜激情综合网| 欧美顶级少妇做爰| 亚洲人成艺术| 久久精品一区二区国产| 99天天综合性| 久久久人成影片一区二区三区| 中文久久精品| 久久深夜福利免费观看| 亚洲一级二级在线| 久久亚洲电影| 久久精品国产99精品国产亚洲性色 | 欧美在线一级va免费观看| 一区二区国产日产| 鲁大师成人一区二区三区| 性欧美大战久久久久久久久| 欧美日本免费一区二区三区| 欧美国产一区二区在线观看 | 国产精品有限公司| 亚洲精品乱码久久久久久黑人| 狠狠综合久久av一区二区老牛| 日韩视频中文字幕| 国产日产欧美精品| 一区二区三区四区五区精品视频| 亚洲精品日韩在线| 欧美成人午夜影院| 亚洲精品国产精品国产自| 亚洲看片网站| 欧美午夜激情在线| 亚洲淫性视频| 欧美一区免费视频| 国产日韩欧美高清| 久久久久久久999精品视频| 久久综合色播五月| 亚洲国产欧美日韩另类综合| 麻豆久久婷婷| 亚洲日本欧美日韩高观看| 日韩网站在线| 国产精品久久久久久福利一牛影视| 一区二区三区毛片| 欧美在线在线| 亚洲国产天堂久久国产91| 欧美jizz19性欧美| 91久久久久久久久久久久久| 日韩视频精品在线| 国产精品久久久一区麻豆最新章节 | 欧美在线观看网址综合| 国产美女精品免费电影| 午夜一区不卡| 麻豆av福利av久久av| 精品二区久久| 久久免费高清视频| 亚洲丶国产丶欧美一区二区三区| 最新国产拍偷乱拍精品| 蜜臀av一级做a爰片久久| 99在线热播精品免费| 亚洲一二三区在线观看| 好看的日韩视频| 久久亚洲私人国产精品va| 裸体一区二区| 亚洲三级电影全部在线观看高清| 国产精品二区影院| 亚洲欧美www| 美脚丝袜一区二区三区在线观看 | 欧美成人69av| 亚洲日本视频| 亚洲欧美日韩爽爽影院| 在线观看成人av| 欧美1区视频| 在线亚洲美日韩| 伊人蜜桃色噜噜激情综合| 欧美色播在线播放| 亚洲欧美在线x视频| 久久国产精品一区二区三区| 欧美日韩一区二区免费在线观看 | 欧美综合二区| 91久久综合亚洲鲁鲁五月天| 一区二区三区欧美激情| 激情婷婷亚洲| 欧美日韩免费观看一区二区三区| 亚洲精品字幕| 久久精品一区二区国产| 99re66热这里只有精品4| 国产综合网站| 欧美性jizz18性欧美| 欧美国产成人精品| 美女啪啪无遮挡免费久久网站| 欧美在线视频播放|