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

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>
            欧美一区免费| 欧美色网在线| 日韩亚洲精品电影| 国产精品美女久久久久久久| 国产欧美一区二区视频| 欧美日韩综合| 久久国内精品视频| 欧美在线视频观看| 欧美一区二区私人影院日本| 欧美日韩精品欧美日韩精品一| 国产欧美日韩一区二区三区在线观看| 最新国产の精品合集bt伙计| 亚洲欧美日韩直播| 香蕉久久精品日日躁夜夜躁| 中文在线资源观看视频网站免费不卡| 亚洲资源av| 欧美成年视频| 中文国产成人精品| 亚洲一区在线观看免费观看电影高清| 樱桃国产成人精品视频| 国产欧美日韩精品专区| 国产日产精品一区二区三区四区的观看方式 | 亚洲激情婷婷| 一区在线视频| 欧美韩日亚洲| 亚洲综合色丁香婷婷六月图片| 免费在线日韩av| 欧美在线亚洲| 久久亚洲精品一区| 欧美成人国产一区二区| 久久黄色影院| 在线视频你懂得一区二区三区| 欧美一级大片在线观看| 久久久水蜜桃av免费网站| 久久理论片午夜琪琪电影网| 亚洲午夜av| 亚洲精品黄色| 免费在线欧美黄色| 亚洲精品一区二区三区樱花 | 久色婷婷小香蕉久久| 免费在线欧美黄色| 9人人澡人人爽人人精品| 亚洲欧美日韩精品一区二区| 国产精品私拍pans大尺度在线 | 欧美亚洲免费在线| 久久精品亚洲热| 午夜精品久久久久久| 久久综合色播五月| 欧美日韩成人一区二区| 国产手机视频精品| 99这里有精品| 夜夜爽www精品| 亚洲狼人综合| 99成人在线| av成人天堂| 最新日韩精品| 欧美电影在线免费观看网站| 亚洲国产日韩欧美在线99| 日韩一区二区免费看| 国产精品a久久久久久| 亚洲第一毛片| 亚洲高清在线| 亚洲精品一区在线观看| 久久精品国产亚洲一区二区| 久热这里只精品99re8久| 亚洲一区免费视频| 夜夜嗨av一区二区三区中文字幕| 欧美精品日韩一区| 国产精品一区二区久激情瑜伽| 久久精品国产欧美激情| 夜夜精品视频一区二区| 另类成人小视频在线| 国产婷婷色一区二区三区| 一区二区三区成人精品| 亚洲国内在线| 99国产精品一区| 亚洲一级片在线观看| 久久五月激情| 欧美资源在线观看| 日韩一级网站| 欧美一区二区三区播放老司机| 亚洲电影在线看| 国产精品99久久不卡二区| 亚洲日本aⅴ片在线观看香蕉| 国产日韩精品在线观看| 欧美一区二区三区精品电影| 女仆av观看一区| 欧美色123| 国产欧美日韩另类一区| 亚洲一区二区三区免费视频| 欧美aaa级| 国产精品入口尤物| 正在播放亚洲| 国产精品va| 免费看黄裸体一级大秀欧美| 亚洲一区3d动漫同人无遮挡| 欧美激情国产日韩精品一区18| 久久在线91| 日韩视频在线观看免费| 欧美日韩成人在线播放| 亚洲人成小说网站色在线| 亚洲丰满少妇videoshd| 美女诱惑一区| 国产欧美一区二区三区久久人妖 | 99精品视频一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 一区二区三区 在线观看视| 亚洲电影免费观看高清完整版在线观看 | 亚洲激情视频网站| 六月天综合网| 国产伪娘ts一区| 亚洲午夜电影| 久久av资源网站| 亚洲欧美不卡| 欧美激情精品久久久久久久变态 | 亚洲国产日韩欧美综合久久| 午夜精品一区二区在线观看| 一本一本大道香蕉久在线精品| 久久综合久久综合这里只有精品| 性色av一区二区三区红粉影视| 欧美激情一区二区三区四区| 亚洲国产精品久久久久婷婷老年 | 亚洲精品欧美日韩专区| 快she精品国产999| 久久九九热免费视频| 精品动漫一区| 久久综合久久久久88| 欧美日韩成人一区二区| 欧美一区二区视频观看视频| 国产一区二区毛片| 亚洲人成啪啪网站| 国产精品日韩在线观看| 欧美成人日韩| 一区二区三区色| 欧美极品在线视频| 欧美一级片久久久久久久| 久久精品亚洲精品| 亚洲在线网站| 制服丝袜激情欧洲亚洲| 在线播放中文一区| 午夜久久一区| 国产午夜精品久久久久久免费视 | 亚洲高清资源综合久久精品| 99精品99久久久久久宅男| 国产资源精品在线观看| 亚洲午夜日本在线观看| 亚洲高清二区| 久久精品中文| 亚洲国产日韩一区| 亚洲人成亚洲人成在线观看图片| 99re6热只有精品免费观看 | 国产精品嫩草影院av蜜臀| 久久精品久久综合| 国产毛片一区| 亚洲欧洲精品一区二区精品久久久| 一区在线播放视频| 一区二区三区精品国产| 亚洲美女中出| 一本色道久久88综合日韩精品| 久久精品人人做人人爽| 国产精品婷婷| 亚洲福利视频专区| 最近中文字幕日韩精品 | 欧美一区二区三区在线视频 | 亚洲精品免费在线播放| 亚洲国产精品成人综合色在线婷婷| 欧美日韩妖精视频| 一区二区不卡在线视频 午夜欧美不卡' | 欧美一区二视频在线免费观看| 欧美国产在线电影| 亚洲精品久久久久久下一站| 一区在线免费| 一区二区三区导航| 欧美一级片久久久久久久| 国产亚洲aⅴaaaaaa毛片| 亚洲欧洲av一区二区| 久久久五月天| 欧美午夜a级限制福利片| 亚洲一区二区三区午夜| 久久九九免费视频| 亚洲电影免费观看高清完整版在线 | 国产欧美日韩在线播放| 欧美一区在线直播| 免费一级欧美片在线播放| 亚洲欧洲在线一区| 欧美婷婷在线| 亚洲福利免费| 韩日成人av| 亚洲欧美日韩综合aⅴ视频| 久久久www| 国产精品永久入口久久久| 亚洲欧美激情一区| 久久精品亚洲一区二区| 欧美精品三级在线观看| 亚洲激情偷拍| 红杏aⅴ成人免费视频| 欧美大片国产精品| 亚洲淫性视频| 亚洲欧美激情一区| 亚洲二区在线观看|