■ Process 클래스 : 윈도우즈 서비스 실행하기
------------------------------------------------------------------------------------------------------------------------
▶ WindowsServiceHelper.cs
using System.Diagnostics;
namespace TestProject { /// <summary> /// 윈도우즈 서비스 헬퍼 /// </summary> public static class WindowsServiceHelper { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public
#region 윈도우즈 서비스 생성하기 - CreateWindowsService(serviceName, argumentList)
/// <summary> /// 윈도우즈 서비스 생성하기 /// </summary> /// <param name="serviceName">서비스명</param> /// <param name="argumentList">인자 리스트</param> /// <returns>처리 결과</returns> public static int CreateWindowsService(string serviceName, string argumentList) { Process process = GetProcess("sc.exe", $"create {serviceName} binPath= \"{argumentList}\"");
process.Start();
process.WaitForExit();
return process.ExitCode; }
#endregion #region 윈도우즈 서비스 시작하기 - StartWindowsService(serviceName)
/// <summary> /// 윈도우즈 서비스 시작하기 /// </summary> /// <param name="serviceName">서비스명</param> /// <returns>처리 결과</returns> public static int StartWindowsService(string serviceName) { Process process = GetProcess("sc.exe", $"start {serviceName}");
process.Start();
process.WaitForExit();
return process.ExitCode; }
#endregion #region 윈도우즈 서비스 중단하기 - StopWindowsService(serviceName)
/// <summary> /// 윈도우즈 서비스 중단하기 /// </summary> /// <param name="serviceName">서비스명</param> /// <returns>처리 결과</returns> public static int StopWindowsService(string serviceName) { Process process = GetProcess("sc.exe", $"stop {serviceName}");
process.Start();
process.WaitForExit();
return process.ExitCode; }
#endregion #region 윈도우즈 서비스 제거하기 - DeleteWindowsService(serviceName)
/// <summary> /// 윈도우즈 서비스 제거하기 /// </summary> /// <param name="serviceName">서비스명</param> /// <returns>처리 결과</returns> public static int DeleteWindowsService(string serviceName) { Process process = GetProcess("sc.exe", $"delete {serviceName}");
process.Start();
process.WaitForExit();
return process.ExitCode; }
#endregion
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로세스 구하기 - GetProcess(filePath, argumentList)
/// <summary> /// 프로세스 구하기 /// </summary> /// <param name="filePath">파일 경로</param> /// <param name="argumentList">인자 리스트</param> /// <returns>프로세스</returns> private static Process GetProcess(string filePath, string argumentList) { Process process = new Process();
process.StartInfo.UseShellExecute = true; process.StartInfo.FileName = filePath; process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; process.StartInfo.Verb = "runas"; process.StartInfo.Arguments = argumentList;
return process; }
#endregion } }
|
▶ Program.cs
using System;
namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary> /// 프로그램 시작하기 /// </summary> private static void Main(string[] argumentArray) { string serviceName = "nats01"; string argumentList = @"d:\nats\bin\gnatsd.exe --config d:\nats\config\server.conf";
int exitCode;
exitCode = WindowsServiceHelper.CreateWindowsService(serviceName, argumentList);
if(exitCode != 0) { Console.WriteLine("윈도우즈 서비스 생성을 실패했습니다 : {0}", exitCode);
return; }
exitCode = WindowsServiceHelper.StartWindowsService(serviceName);
if(exitCode != 0) { Console.WriteLine("윈도우즈 서비스 시작을 실패했습니다 : {0}", exitCode);
return; }
exitCode = WindowsServiceHelper.StopWindowsService(serviceName);
if(exitCode != 0) { Console.WriteLine("윈도우즈 서비스 중단을 실패했습니다 : {0}", exitCode);
return; }
exitCode = WindowsServiceHelper.DeleteWindowsService(serviceName);
if(exitCode != 0) { Console.WriteLine("윈도우즈 서비스 삭제를 실패했습니다 : {0}", exitCode);
return; }
Console.WriteLine("작업을 성공적으로 처리했습니다."); }
#endregion } }
|
------------------------------------------------------------------------------------------------------------------------
'C# > Common' 카테고리의 다른 글
[C#/COMMON] AppDomain 클래스 : 별도 애플리케이션 도메인에서 특정 어셈블리 로드하기 (0) | 2019.06.18 |
---|---|
[C#/COMMON] AppDomain 클래스 : 애플리케이션 그림자 복사(Shadow Copy) 사용하기 (0) | 2019.06.18 |
[C#/COMMON] SpeechSynthesizer 클래스 : GetInstalledVoices 메소드를 사용해 설치 음성 목록 구하기 (0) | 2019.06.11 |
[C#/COMMON] UNIX 타임 스탬프 구하기 (0) | 2019.06.09 |
[C#/COMMON] WIN32 API를 사용해 최상위 윈도우 여부 구하기 (0) | 2019.06.06 |
[C#/COMMON] Process 클래스 : 윈도우즈 서비스 실행하기 (0) | 2019.06.06 |
[C#/COMMON] 공용체(Union) 구조체 사용하기 (0) | 2019.06.02 |
[C#/COMMON] Socket 클래스 : 소켓 연결시 시간 제한하기 (0) | 2019.06.02 |
[C#/COMMON] 파일 확장자 연결하기 (0) | 2019.05.30 |
[C#/COMMON] 바이트 배열에서 구조체 객체 구하기 (0) | 2019.05.27 |
[C#/COMMON] 구조체 바이트 배열 구하기 (0) | 2019.05.27 |
댓글을 달아 주세요