Teknologi WMI (Instrumentasi Manajemen Windows) adalah alat manajemen sistem di bawah Windows yang disediakan oleh Microsoft. Melalui alat ini, hampir semua informasi di sistem klien dapat dikelola secara lokal atau di sistem klien. Banyak alat manajemen jaringan profesional dikembangkan berdasarkan WMI. Alat ini adalah alat standar di bawah Win2000 dan WinNT, dan opsi instalasi yang diperluas di bawah Win9X. Artikel ini akan memperkenalkan cara mengakses pemrograman objek WMI melalui pemrograman VB.
Pertama, mari kita lihat contoh sederhana memperoleh informasi sistem melalui WMI. Contoh ini memperoleh proses yang berjalan di sistem melalui objek WMI:
FunctionEnum1()AsString
RedupkanWMI
SetWMI=GetObject(WinMgmts:)
Setobjs=WMI.InstancesOf(Win32_PRocess)
UntukSetiapobjInobjs
Enum1=Enum1 objek.Deskripsi Chr(13) Chr(10)
Berikutnya
Fungsi Akhir
Pada kode di atas, objek WMI pertama kali diperoleh melalui GetObject(WinMgmts:). Ada banyak sub-item di bawah objek WMI. Di sini kita memperoleh semua sub-item daftar proses dalam sistem melalui WMI.InstancesOf(Win32_Process).
Mari kita lihat contoh lengkap mengakses objek WMI. Contoh ini memperoleh informasi komputer.
Buat proyek baru, tambahkan kontrol TextBox dan kontrol CommandButton ke Form1, dan tulis kode berikut di event Click pada CommandButton:
PrivateSubCommand1_Klik()
Meredupkan, Sistem, item
DimiAsInteger
SetSystem=GetObject(winmgmts:).InstancesOf(Win32_ComputerSystem)
UntukEachitemInSystem
'Daftar1.TambahkanItem.cputype
s=Info Komputer&vbCrLf
s=s&***************************&vbCrLf
s=s&nama komputer:&nama item&vbCrLf
s=s&Status:&item.Status&vbCrLf
s=s&tipe:&item.SystemType&vbCrLf
s=s&Produsen:&item.Pabrikan&vbCrLf
s=s&model:&item.Model&vbCrLf
s=s&memori:~&item.totalPhysicalMemory/1024000&mb&vbCrLf
s=s&domain:&item.domain&vbCrLf
Opsi 's=s&Workgroup&item.Workgroup&vbCrLf' untuk mendapatkan grup kerja dan domain tidak dapat digunakan secara bersamaan
s=s&pengguna saat ini:&item.nama pengguna&vbCrLf
s=s&status boot&item.BootupState&vbCrLf
s=s&Komputer ini milik&item.PrimaryOwnerName&vbCrLf
s=s&tipe sistem&item.CreationClassName&vbCrLf
s=s&Jenis komputer&item.Deskripsi&vbCrLf
Fori=0To1'Di sini diasumsikan ada dua sistem yang diinstal
s=s&Chr(5)&Opsi Startup&i&:&item.SystemStartupOptions(i)_
&vbCrLf
Selanjutnya
Berikutnya
Teks1.Teks=s
Sub Akhir
Jalankan program, klik Command1, dan informasi komputer akan ditampilkan di kotak teks.
Pada kode di atas, program memperoleh objek WMI melalui GetObject(winmgmts:), kemudian memperoleh subkunci Win32_ComputerSystem berikut dan memperoleh informasi dalam sistem dengan mengakses sub-item di objek Win32_ComputerSystem.
Perlu dicatat bahwa tidak semua sistem mendukung WMI, dan di beberapa sistem, informasi seperti pabrikan tidak dapat ditampilkan.
Komputer dan jaringan saat ini sangat kompleks. Misalnya dari segi perangkat keras sistem, ada motherboard, hard drive, kartu jaringan...
Dari segi perangkat lunak, ada sistem operasi, perangkat lunak yang diinstal dalam sistem, proses yang berjalan, dll. Aspek jaringan mencakup domain, kelompok kerja, dll. Anda dapat menggunakan WMI untuk mengakses semua informasi di atas, namun akan sangat merepotkan jika mengaksesnya menggunakan item yang sama seperti di atas. Untuk tujuan ini, WMI menyediakan pernyataan kueri yang mirip dengan pernyataan SQL, yang melaluinya sub-item di bawah objek WMI dapat diperoleh.
Berikut adalah kode yang melewati kartu jaringan yang terpasang di sistem dan mengembalikan alamat MAC kartu jaringan:
PrivateFunctionMACAddress()AsString
Setobjs=GetObject(winmgmts:).ExecQuery(_
PILIHMACAAlamat&_
DARIWin32_NetworkAdapter&_
DI MANA&_
((MACAddressIsNotNULL)&_
DAN(Produsen<>&_
'Microsoft')))
UntukSetiapobjInobjs
MACAddress=obj.MACAddress
KeluarUntuk
Obj berikutnya
Fungsi Akhir
Kode di atas memperoleh objek WMI, dan kemudian menjalankan ExecQuery untuk menjalankan pernyataan kueri WMI untuk mendapatkan kartu jaringan yang terpasang dan mengembalikan alamat MAC kartu jaringan.
WMI juga mendukung pemrosesan peristiwa, memungkinkan program menangani peristiwa sistem, seperti menjalankan dan menutup program, memasukkan dan menghapus drive yang dapat dilepas, dll. Di bawah ini adalah program yang dapat memonitor program yang berjalan pada sistem.
Pertama buat proyek baru, lalu klik item referensi proyek di menu, pilih MicrosoftWMIScriptingLibrary di daftar referensi, dan tambahkan perpustakaan objek WMI ke proyek. Kemudian tambahkan kontrol ListBox ke Form1, dan kemudian tambahkan kode berikut ke Form1:
Opsi Eksplisit
DimLocatorAsSWbemLocator
DimServicesAsSWbemServices
RedupDenganEventsStatusSinkAsSWbemSink
Acara PrivateSubKill()
StatusSink.Batal
SetStatusSink=Tidak ada
Sub Akhir
PrivateSubForm_Load()
DimQueryAsString
SetStatusSink=BaruSWbemSink
SetLocator=Buat Objek(WbemScripting.SWbemLocator)
SetServices=Pencari Lokasi.ConnectServer()
Kueri=PILIH*FROM__InstanceCreationEvent
Kueri=Kueri DALAM1
Kueri=Kueri WHERETargetInstanceISA'Win32_Process'
Layanan.ExecNotificationQueryAsyncStatusSink,Query
Sub Akhir
PrivateSubStatusSink_OnObjectReady(ByValStatusEventAsSWbemObject,_
OlehValEventContextAsSWbemNamedValueSet)
Dimarr
DimstrQueAsString
DimiAsInteger
Daftar1.Hapus
arr=Split(StatusEvent.GetObjectText_,Chr(10))
Fori=LBound(arr)ToUBound(arr)
Daftar1.TambahkanItemarr(i)
Selanjutnya
Sub Akhir
PrivateSubStatusSink_OnCompleted(ByValHResultAsWbemErrorEnum,_
OlehValErrorObjectAsSWbemObject,_
OlehValEventContextAsSWbemNamedValueSet)
IfHResult<>wbemErrCallCancelledThen
'Penanganan kesalahan
AkhirJika
Sub Akhir
Dalam program di atas, objek SWbemSink StatusSink didefinisikan, kemudian objek SWbemServices Server dibuat, dan StatusSink terhubung ke objek Server. Dengan cara ini, jalannya program dapat dipantau melalui StatusSink.
Jalankan program, lalu jalankan program apa pun, dan informasi program yang sedang berjalan dapat dicantumkan di ListBox Form1.
Aspek yang paling kuat dari aplikasi WMI adalah dapat mewujudkan manajemen jarak jauh melalui halaman WEB. Selanjutnya mari kita buat halaman HTML yang secara dinamis dapat memonitor program yang berjalan di sistem seperti program VB di atas. Kode HTML untuk program yang berjalan pada sistem monitoring adalah sebagai berikut:
<html>
<kepala>
<objectID=mysinkCLASSID=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></objek>
</kepala>
<SKRIP>
fungsijendela.onload()
{
varlocator=newActiveXObject(WbemScripting.SWbemLocator);
varservice=pencari lokasi.ConnectServer();
szQuery=PILIH*FROM__InstanceCreationEvent;
szQuery = DALAM1;
szQuery =WHERETargetInstanceISA'Win32_Process';
layanan.ExecNotificationQueryAsync(mysink,szQuery);
}
</SKRIP>
<scriptFOR=mysinkEVENT=OnObjectReady(obj,objAsyncContext)>
document.all.info.innerHTML =obj.TargetInstance.Nama <br>;
</skrip>
<tubuh>
<spanID=info></span>
</badan>
</html>
Simpan file halaman dengan kode sebagai akhiran Htm. Klik dua kali untuk membuka halaman web, lalu jalankan program. Nama file dari program yang sedang berjalan dapat dicantumkan di halaman web.
Di atas secara singkat memperkenalkan penerapan WMI. Faktanya, pengoperasian objek WMI sangat kompleks dan fungsinya juga sangat kuat. Misalnya, Anda dapat menggunakan WMI untuk memonitor komputer di seluruh LAN di server dan menginstal perangkat lunak di dalamnya batch ke komputer di LAN (seperti perangkat lunak anti-virus). Akses server dari jarak jauh melalui halaman, kontrol server untuk menjalankan program, menambah pengguna, dll. Untuk aplikasi WMI lainnya, pembaca dapat mengunjungi beranda pengembangan WMI di MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmistart_5kth.asp
Dapatkan informasi lebih lanjut.
->