Você está aqui: C# ::: Dicas & Truques ::: WMI (Windows Management Instrumentation) |
O que é WMI (Windows Management Instrumentation) e como usar esta infraestrutura em seus programas C#Quantidade de visualizações: 14375 vezes |
|
O WMI (Windows Management Instrumentation) é a infraestrutura para o gerenciamento de dados e operações em sistemas baseados no Windows. Por meio do WMI nós podemos obter várias informações a respeito de todo o hardware no sistema, incluindo: a) Número de série, tamanho (capacidade) e espaço livre em drives; b) Número de série, velocidade de clock e tipo de soquete da CPU; c) Endereço MAC do adaptador de rede (Network Adapter MAC Address); d) Gateway padrão do adaptador de rede (Network Adapter Default Gateway); e) Muitas outras informações úteis para o desenvolvimento de programas que investigam ou atualizam informações relacionados a harware. O WMI foi projetado para programadores que usam C/C++, o Microsoft Visual Basic ou uma linguagem de script que tenha um motor (engine) no Windows e que nos permita lidar com objetos Microsoft ActiveX. Nesta dica mostrarei como podemos usar WMI a partir de aplicações C#. As informações contidas nas várias classes do WMI podem ser obtidas com o uso do WQL (SQL for WMI). Esta é a WMI Query Language, um sub-conjunto do American National Standards Institute Structured Query Language (ANSI SQL) ? com algumas diferenças semânticas. A classe WMI que abordarei nesta dica é a Win32_LogicalDisk. Esta classe representa uma fonte de dados que é um apelido para um dispositivo de armazenagem local em um computador usando Windows. Por meio desta classe podemos obter informações interessantes, tais como o número serial do HD, o espaço inicial, o espaço disponível, tipo do drive, etc. O primeiro procedimento que vamos realizar é a obtenção do número de série do HD. Veja: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
private void button3_Click(object sender, EventArgs e){
// using System.Management;
// vamos obter o número de série (serial number) do drive C
string drive = "C";
// vamos criar um novo objeto da classe ManagementObject
// informando que queremos obter informações a respeito do drive C
ManagementObject disk = new
ManagementObject("win32_logicaldisk.deviceid="" + drive + ":"");
// vamos atrelar a classe WMI ao objeto de gerencimento
disk.Get();
// vamos exibir o número de série do HD
MessageBox.Show(disk.GetPropertyValue("VolumeSerialNumber").ToString());
}
Antes de executar este exemplo verifique se você realmente adicionou a referência System.Management ao seu projeto. Note que a linha: MessageBox.Show(disk.GetPropertyValue("VolumeSerialNumber").ToString()); pode ser substituída por: MessageBox.Show(disk["VolumeSerialNumber"].ToString()); Para verificar se o código C# realmente retornou o número de série correto, abra uma janela de comando e dispare: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- vol Você terá um resultado parecido com: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- C:Documents and SettingsOsmar>vol O volume na unidade C é LABORATORIO O número de série do volume é A9D3-764C Para obtermos o nome do volume só precisamos fazer uma pequena modificação no código. Veja: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
private void button3_Click(object sender, EventArgs e){
// using System.Management;
// vamos obter o nome de volume (Volume Name) do drive C
string drive = "C";
// vamos criar um novo objeto da classe ManagementObject
// informando que queremos obter informações a respeito do drive C
ManagementObject disk = new
ManagementObject("win32_logicaldisk.deviceid="" + drive + ":"");
// vamos atrelar a classe WMI ao objeto de gerencimento
disk.Get();
// vamos exibir o nome de volume do HD
MessageBox.Show(disk["VolumeName"].ToString());
}
|
|
|
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





