22

私は次のコードを使用しています。

ServiceController MyController = new ServiceController();
MyController.MachineName = server_txt.Text.Trim();
MyController.ServiceName = "Service1";

string msg = MyController.Status.ToString();
Label1.Text = msg;

このコードは、私がアクセスできるネットワークコンピューターで正常に機能します。クレデンシャルを使用して異なるドメインのシステムで機能するようにこれを変更するにはどうすればよいですか?

4

2 に答える 2

17

WMIを使用する場合は、「ConnectionOptions」で資格情報を設定できます。

ConnectionOptions op = new ConnectionOptions();
op.Username = "Domain\\Domainuser";
op.Password = "password";
ManagementScope scope = new ManagementScope(@"\\Servername.Domain\root\cimv2", op);
scope.Connect();
ManagementPath path = new ManagementPath("Win32_Service");
ManagementClass services;
services = new ManagementClass(scope, path, null);

foreach (ManagementObject service in services.GetInstances())
{

if (service.GetPropertyValue("State").ToString().ToLower().Equals("running"))
{ // Do something }

}
于 2011-06-14T18:20:28.717 に答える