2009-03-12 7 views
1

이제 VB.NET을 처음 사용하고 사용자에게 서버 이름을 묻는 메시지를 작성한 다음 해당 컴퓨터에서 IIS를 다시 시작하는 프로그램을 작성하려고합니다.VB.NET을 사용하여 서비스를 다시 시작하는 방법은 무엇입니까?

문제 1) 네임 스페이스 System.ServiceProcess이 인식되지 않습니다.
문제 2) 코드에 도움이 필요하며 servername을 sub로 전달해야합니다.

Imports System 
Imports System.ServiceProcess 
Imports System.IO 
Imports System.Threading 

Class RestartIIS 
    Shared Sub Main() 
     Run() 
    End Sub 

    Public Sub Run() 
     Console.WriteLine("Please enter the Server Name: ") 
     Dim ServerName As String = Console.ReadLine() 

     Dim sc As ServiceController = New ServiceController("W3SVC") 

     sc.Stop() 
     Thread.Sleep(2000) 
     sc.Start() 

     Console.Write("Press Enter to Exit") 
     Console.ReadLine() 
    End Sub 
End Class 
프로젝트를 클릭하고 참조 추가를 마우스 오른쪽 버튼으로 클릭하여 System.ServiceProcess 어셈블리에 대한 참조를 추가 ...이 같은 Main 방법에 전달 된 명령 행 인수 받아야

답변

2

:

Imports System 
Imports System.ServiceProcess 
Imports System.IO 
Imports System.Threading 

Class RestartIIS 
    Shared Sub Main(ByVal commandLineArgs() as String) 
     Run(commandLineArgs(0)) 
    End Sub 

    Public Sub Run(ByVal machineName as String) 
     Console.WriteLine("Please enter the Server Name: ") 
     Dim ServerName As String = Console.ReadLine() 

     Dim sc As ServiceController = New ServiceController("W3SVC", machineName) 

     sc.Stop() 
     Thread.Sleep(2000) 
     sc.Start() 

     Console.Write("Press Enter to Exit") 
     Console.ReadLine() 
    End Sub 
End Class 
+0

이를 질문은 운동으로 보입니다. 따라서 완전한 코드를 게시하는 것이 더 도움이되었을 것입니다. IMHO. – Tomalak

+0

Mehrdad, 이걸 실행하려했을 때, 나에게 공유 방법 내에서 호출을 할 수 없다는 것을 말하고 있습니다. "은 명시 적 인스턴스" –

+0

@Tomalak이없는 공유 메서드 또는 공유 멤버 이니셜 라이저 내에서 클래스의 인스턴스 멤버를 참조 할 수 없습니다. 이는 숙제보다 스크립팅 관리 유형 질문과 같습니다. 나는 숙제가 서비스와 이런 종류의 물건을 다룰 것이라고 생각하지 않는다. –

0
ServiceControl.Stop() 
Do 
    ServiceControl.Refresh() 
    If ServiceControl.Status = ServiceControllerStatus.Stopped Then 
     ServiceControl.Start() 
     Exit Do 
    End If 
Loop 
+1

이 코드 스 니펫이 질문에 대답하는 이유는 질문을하는 사람뿐만 아니라 나중에이 질문을 찾는 사람들에게도 도움이 될 것입니다. –

관련 문제