2013-08-23 41 views
12

.net projesinden uzaktan hizmeti başlatabilir veya durdurabilirim.Servis uzaktan nasıl yeniden başlatılır?

ConnectionOptions options = new ConnectionOptions(); 
options.Username = @"192.168.36.22\test"; 
options.Password = "test"; 
ManagementScope scope = new ManagementScope(@"\\192.168.36.22\root\cimv2", options); 
scope.Connect(); 


ManagementOperationObserver Stop = new ManagementOperationObserver(); 
Stop.Completed += new CompletedEventHandler(Stop_CallBack); 
try 
{ 
    string NameServices = "ArcGIS Server"; 
    WqlObjectQuery query = new WqlObjectQuery("SELECT * FROM Win32_Service WHERE Name=\"" + NameServices + "\""); 
    ManagementObjectSearcher find = new ManagementObjectSearcher(scope, query); 
    foreach (ManagementObject spooler in find.Get()) 
    { 
     spooler.InvokeMethod("StopService", new object[] { }); 
     spooler.InvokeMethod(Start, "StopService", new object[] { }); 
    } 
} 
.... 

Bu hizmeti nasıl yeniden başlatabilirim?

+0

Durdurmayı kullanabilir ve sonra başlatabilirsiniz. Bu aynı. – FelProNet

cevap

16

Öyle gibi ServiceController sınıfını kullanabilirsiniz:

ServiceController sc = new ServiceController("ArcGIS Server", "192.168.36.22"); 

sc.Start(); 
sc.Stop(); 

Bu WMI ile etkileşim tüm bu kod yazmak zorunda kaydeder. ServiceController sınıfını kullanmak için Not, System.ServiceProcess derlemesine bir başvuru eklemeniz gerekir.

+0

ManagementObject kullanarak hizmeti yeniden başlatabilir miyim? – novicegis

+0

Eğer ManagementObject kullanmak istiyorsanız, o zaman sadece "StartService" için InvokeMethod –

+1

geçmek gerekir ServiceController kullandığımda, "Hizmet MAPSERVER 'Bilgisayarda Hizmet Denetim Yöneticisi açılamıyor." Bu işlem başka ayrıcalıklara sahip olabilir " – novicegis

-3

Bağlanmaya çalıştığımda benzer bir soruna rastladım, sadece makine adınızı yönetici olarak hedef makinenin 'kullanıcı grubu'na ekleyin ve verileri getirebileceksiniz.

İlgili konular