서비스가 시작되거나 중지되면이 코드에서 powershell 스크립트를 실행합니다.ServiceController 상태가 실제 서비스 상태를 정확하게 반영하지 않습니다.
Timer timer1 = new Timer();
ServiceController sc = new ServiceController("MyService");
protected override void OnStart(string[] args)
{
timer1.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer1.Interval = 10000;
timer1.Enabled = true;
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
if ((sc.Status == ServiceControllerStatus.StartPending) || (sc.Status == ServiceControllerStatus.Stopped))
{
StartPs();
}
}
private void StartPs()
{
PSCommand cmd = new PSCommand();
cmd.AddScript(@"C:\windows\security\dard\StSvc.ps1");
PowerShell posh = PowerShell.Create();
posh.Commands = cmd;
posh.Invoke();
}
내가 cmd를 프롬프트 그러나에서 내 서비스를 죽일 때 잘 작동하고
심지어 내 서비스가 실행되면, PowerShell 스크립트 왜 (이 컴퓨터에서 파일을 추가합니다) 어떤 생각을 자신을 계속 실행하면?
powershell이이 질문과 직각을 이룬다는 것이 맞겠습니까? 그리고 실제 질문은 : 왜 내 StartPending/Stopped 검사가 제대로 작동하지 않습니까? –
정확히 무슨 일이 일어나고 있는지 확인하기 위해 중단 점을 두어 본 적이 있습니까? –