Tôi đang cố viết một ứng dụng và dịch vụ theo dõi một tập hợp dịch vụ nhất định và a) đảm bảo chúng đang chạy và b) dựa trên các tiêu chí nhất định, khởi động lại chúng khi cần.Dừng/Bắt đầu dịch vụ bằng mã trong Windows 7
Tôi tiếp tục chạy vào lỗi truy cập bị từ chối.
Nếu tôi chỉ đơn giản lặp thông qua các quá trình trên hệ thống, tìm ra một tôi muốn như vậy:
foreach (ServiceController sc in ServiceController.GetServices())
{
if(sc.ServiceName == "MyServiceName")
{
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 60));
sc.Start();
}
}
tôi nhận được:
InnerException: System.InvalidOperationException
Message="Cannot open My Service service on computer '.'."
Source="System.ServiceProcess"
StackTrace:
at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
at System.ServiceProcess.ServiceController.Stop()
at lib.ListServices() in D:\lib.cs:line 552
at lib.Init() in D:\lib.cs:line 56
InnerException: System.ComponentModel.Win32Exception
Message="Access is denied"
ErrorCode=-2147467259
NativeErrorCode=5
InnerException:
Tôi đã cố gắng để mạo danh một người sử dụng, tôi có đã cố gắng thực hiện cùng một mã từ một dịch vụ khác đang chạy dưới dạng dịch vụ hệ thống. Không ai trong số đó thực sự có thể ảnh hưởng đến dịch vụ. Nếu nó bắt đầu, tôi không thể dừng lại. Nếu nó dừng lại, tôi không thể bắt đầu nó. Tôi biết điều này là tất cả liên quan đến quyền tôi chỉ không tìm thấy một cơ chế mà thực sự cho phép tôi kiểm soát dịch vụ.
Bất kỳ hỗ trợ nào sẽ được đánh giá rất nhiều.