استفاده از WMI برای تعیین وضعیت نصب به روز رسانی ویندوز
خلاصه
از WMI برای بررسی به روز رسانی ها (در کیلوبایت) استفاده کنید که بر روی ویندوزی که در حال حاضر از آن استفاده می کنید نصب شده اند.
محیط عامل
محیط بررسی عملیات
نسخه Windows |
|
نسخه .NET Framework |
|
الزامات سیستم مورد نیاز
نسخه Windows |
|
نسخه .NET Framework |
|
ماده
کی بی چیه؟
KB همچنین به عنوان مخفف عبارت "کیلوبایت" یا "کیبورد" استفاده می شود، بنابراین فکر نمی کنم کلمه ای باشد که برای عموم مردم به کار می رود، اما به روز رسانی هایی مانند پشتیبانی امنیتی ویندوز و رفع اشکال گاهی اوقات پس از دو حرف اول شناسه به عنوان "KB" گفته می شود.
هر یک از این به روز رسانی ها یک شناسه اختصاص داده شده و در قالب "KBXXXXXXX" مشخص شده است که در آن XXXXXX هر شماره ای است. تعداد ارقام ثابت نیست). توجه داشته باشید، با این حال، که همه به روز رسانی ها از این فرمت پیروی نمی کنند.
به هر حال، نام اصلی این "KB" "پایه دانش مایکروسافت" است و با شناسه مقاله فنی منتشر شده توسط مایکروسافت در وب مطابقت دارد. به عنوان مثال، اگر آن را به روز رسانی به KB980218، مقاله فنی مربوطه است http://support.microsoft.com/?kbid=980218".
برنامه هایی که وضعیت نصب کیلوبایت را جستجو می کنند
اگرچه نمونه ها در ویژوال استودیو ۲۰۱۰ و WPF توصیف شده اند، اما برنامه های چک کردن کیلوبایت نیز می توانند در برنامه های قبلی ویژوال استودیو، فرم ویندوز، و کنسول ها مورد استفاده قرار گیرند. در این مقاله از ابزار دقیق مدیریت ویندوز (WMI) برای بررسی نصب کیلوبایت استفاده خواهیم کرد.
- ابزار دقیق مدیریت ویندوز (از ویکی پدیا)
اضافه کردن منابع
برای استفاده از WMI از کلاس های ManagementObjectSearcher و ManagementObject استفاده می کنید اما برای استفاده از این کلاس ها باید به System.management .dll مراجعه کنید.
برای پروژه های C# ، راست کلیک کنید منابع از راه حل اکسپلورر و اضافه کردن منابع را انتخاب کنید.
هنگامی که گفتگوی مرجع افزودن ظاهر می شود، روی "" کلیک کنید. از زبانه NET، System.Management را انتخاب کرده و روی دکمه OK کلیک کنید.
خوب اگر "System.Management" به مرجع Solution Explorer اضافه شود.
اگر VB.NET باز کردن خواص پروژه، روی "مرور" از زبانه سمت چپ کلیک کنید، روی دکمه Add در سمت راست کلیک کنید. همانطور که در بالا، گفتگوی Add Reference نمایش داده می شود، بنابراین "System.Management" را انتخاب کنید و روی دکمه OK کلیک کنید.
اگر به صفحه قبلی برگردیم و "System.Management" را به لیست میانی اضافه کنید، خوب است.
همچنین، "System.Management" را از لیست زیر بررسی کنید تا توضیحات زیر شبکه را در برنامه خود حذف کنید.
همچنین، اگر چه آن را به راهنمایی اصلی مربوط نیست، این نمونه با استفاده از کلاس StringBuilder، بنابراین من نیز بررسی "System.Text" فضای نام. (VB.NET فقط)
صحنه
صفحه نمایش مورد استفاده در این نمونه یک صفحه نمایش ساده با دکمه اجرا برای بررسی وضعیت نصب کیلوبایت و یک جعبه متن است که نتایج را نمایش می دهد.
من آن را در WPF ساخت، اما همان صفحه نمایش قابل تنظیم در فرم ویندوز است.
برنامه
ManagementObjectSearcher
C # اضافه می کند ""using System.Management;
به آغاز کد برای کاهش شرح کلاس ها و دیگر نامهای نام. در VB.NET، شما مشخص کرده اید که فضای نام باید در خواص پروژه وارد شود، بنابراین نیازی به نوشتن چیز خاصی نیست، اما اگر این کار را نکرده اید، باید "" را اضافه کنید.Imports System.Management
* در هر دو زبان C# و VB.NET، اگر همه نام های کلاس از یک فضای نام مانند "System.Management.ManagementObjectSearcher
" نوشته شوند، مشخصات فوق لازم نیست.
C #
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Management; // 追加 (参照から「.NET」より「System.Management」追加)
در زیر کدی که KB نصب شده را جستجو و فهرست می کند، قرار داده شده است.
C #
this.ResultTextBox.Text = "";
// WMI クエリをセットして管理オブジェクト検索クラスを作成
ManagementObjectSearcher query =
new ManagementObjectSearcher("Select * From Win32_QuickFixEngineering");
// WMI クエリを使用して管理オブジェクトコレクションを取得
ManagementObjectCollection queryCollection = query.Get();
StringBuilder builder = new StringBuilder();
// コレクションから管理オブジェクトを列挙する
// ここでは HotFixID を取得
foreach (ManagementObject mo in queryCollection)
{
builder.AppendLine(mo["HotFixID"].ToString());
}
// 取得した KB 一覧をセット
this.ResultTextBox.Text = builder.ToString();
VB.NET
Me.ResultTextBox.Text = ""
' WMI クエリをセットして管理オブジェクト検索クラスを作成
Dim query As ManagementObjectSearcher = _
New ManagementObjectSearcher("Select * From Win32_QuickFixEngineering")
' WMI クエリを使用して管理オブジェクトコレクションを取得
Dim queryCollection As ManagementObjectCollection = query.Get()
Dim builder As System.Text.StringBuilder = New System.Text.StringBuilder()
' コレクションから管理オブジェクトを列挙する
' ここでは HotFixID を取得
For Each mo As ManagementObject In queryCollection
builder.AppendLine(mo("HotFixID").ToString())
Next
' 取得した KB 一覧をセット
Me.ResultTextBox.Text = builder.ToString()
"" در خطResultTextBox
اول یک جعبه متن برای نمایش نتایج به دست آمده است.
نمونه ای ازnew ManagementObjectSearcher
کلاس جستجوی شیء مدیریت شده را ایجاد می کند و پرس و جو WMI را به عنوان آر استدلال تنظیم می کند. نحو یک پرس و جو تقریباً برابر با یک بیانیه SQL است، بنابراین در رابطه با SQL برای جزئیات به آن نگاه کنید. "Win32_QuickFixEngineering" نشان دهنده یک به روز رسانی است که در مورد سیستم عامل فعلی اعمال می شود.
انجام جستجو در پرس و جو WMI مشخص شده زودتر در "query.Get()
و بازگشت نتایج به عنوان ".ManagementObjectCollection
از آنجا که "" لیست اطلاعات به روز رسانی، ما "" در foreach و نوشتن یک شناسه منحصر به فرد از پارامتر "HotFixID"ManagementObjectCollection
ManagementObject
در نتیجه.
هنگامی که شما این کار را انجام دهید، IDs به روز رسانی به عنوان در شکل نشان داده شده ذکر شده است.
همانطور که می بینید وقتی آن را اجرا می کنید، تنها در اولین دویدن کند است. پس از بار دوم، به طور منطقی زود است.
مشخص نیست که آیا System.Management.dll کند به بار و پردازش و یا اجرای پرس و جو WMI کند است، اما این واقعیت است که آن را آهسته تغییر نمی کند، بنابراین اگر شما در مورد نهان در هنگام استفاده از آن نگران هستند، من فکر می کنم که لازم است برای انجام اقداماتی مانند اجرای ناهمزمان.