Array
(
)

WMI no .NET

Sanses
   - 08 set 2005

Olá

Pelo que tenho vsto sobre WMI, é possível até desligar um computador remoto com ela, mas como usa-la com o .NET, não faço idéia.

Alguem poderia me ajudar ?

Grato
[]´s
Sanses


Sanses
   - 13 set 2005

Olá

encontrei uma classe em C# que realiza esta operação:

#Código


using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
public class CallWMIMethod
{
public static void Main()
{
try
{
ManagementObject classInstance =
new ManagementObject("root\\CIMV2",
"Win32_OperatingSystem.Name=´Microsoft Windows XP Professional|C:\WINDOWS|\Device\Harddisk0\Partition1´",
null);

// no method in-parameters to define


// Execute the method and obtain the return values.
ManagementBaseObject outParams =
classInstance.InvokeMethod("Shutdown", null, null);

// List outParams
Console.WriteLine("Out parameters:");
Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
}
catch(ManagementException err)
{
MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
}
}
}
}


Modifiquei a mesma para usar com Delphi. Compila corretamente. Mas quando executo, da erro dizendo que o caminho do objeto esta errado. Alguem pode ajudar. Por não ter conhecimento da linguagem C, não sei se converti o código corretamente.

Código Convertido:

#Código

unit Silmar;

interface

uses err;

type
CallWMIMethod = class
public
class procedure Main; virtual;static;
end;

implementation

{$AUTOBOX ON}
{$HINTS OFF}
{$WARNINGS OFF}

class procedure CallWMIMethod.Main;
var
outParams: ManagementBaseObject;
classInstance: ManagementObject;
begin
try
classInstance := ManagementObject.Create(´root\CIMV2´, ´Win32_OperatingSystem.ReplaceKeyPropery=´´ReplaceKeyPropertyValue´´´,
nil);
outParams := classInstance.InvokeMethod(´Shutdown´, nil, nil);
Console.WriteLine(´Out parameters:´);
Console.WriteLine((´ReturnValue: ´ + outParams[´ReturnValue´]));
except
on err: ManagementException do
MessageBox.Show((´An error occurred while trying to execute the WMI method: ´
+ err.Message));
end;
end;



Sanses
   - 13 set 2005

Um erro na msg acima, no uses não é err e sim System.Management;