첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ Process 클래스 : 윈도우 서비스 실행하기 예제

------------------------------------------------------------------------------------------------------------------------

using System;

 

string serviceName = "nats01";

string argumentList = @"d:\nats\bin\gnatsd.exe --config d:\nats\config\server.conf";

 

int exitCode;

            

exitCode = WindowServiceHelper.CreateWindowService(serviceName, argumentList);

            

if(exitCode != 0)

{

    Console.WriteLine("윈도우 서비스 생성을 실패했습니다 : {0}", exitCode);

            

    return;

}

            

exitCode = WindowServiceHelper.StartWindowService(serviceName);

            

if(exitCode != 0)

{

    Console.WriteLine("윈도우 서비스 시작을 실패했습니다 : {0}", exitCode);

            

    return;

}

 

exitCode = WindowServiceHelper.StopWindowService(serviceName);

 

if(exitCode != 0)

{

    Console.WriteLine("윈도우 서비스 중단을 실패했습니다 : {0}", exitCode);

 

    return;

}

 

exitCode = WindowServiceHelper.DeleteWindowService(serviceName);

 

if(exitCode != 0)

{

    Console.WriteLine("윈도우 서비스 삭제를 실패했습니다 : {0}", exitCode);

 

    return;

}

 

Console.WriteLine("작업을 성공적으로 처리했습니다.");

------------------------------------------------------------------------------------------------------------------------

 

■ Process 클래스 : 윈도우 서비스 실행하기

------------------------------------------------------------------------------------------------------------------------

using System.Diagnostics;

 

/// <summary>

/// 윈도우 서비스 헬퍼

/// </summary>

public static class WindowServiceHelper

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method

    ////////////////////////////////////////////////////////////////////////////////////////// Static

    //////////////////////////////////////////////////////////////////////////////// Public

 

    #region 윈도우 서비스 생성하기 - CreateWindowService(serviceName, argumentList)

 

    /// <summary>

    /// 윈도우 서비스 생성하기

    /// </summary>

    /// <param name="serviceName">서비스명</param>

    /// <param name="argumentList">인자 리스트</param>

    /// <returns>처리 결과</returns>

    public static int CreateWindowService(string serviceName, string argumentList)

    {

        Process process = GetProcess("sc.exe", $"create {serviceName} binPath= \"{argumentList}\"");

 

        process.Start();

 

        process.WaitForExit();

 

        return process.ExitCode;

    }

 

    #endregion

    #region 윈도우 서비스 시작하기 - StartWindowService(serviceName)

 

    /// <summary>

    /// 윈도우 서비스 시작하기

    /// </summary>

    /// <param name="serviceName">서비스명</param>

    /// <returns>처리 결과</returns>

    public static int StartWindowService(string serviceName)

    {

        Process process = GetProcess("sc.exe", $"start {serviceName}");

 

        process.Start();

 

        process.WaitForExit();

 

        return process.ExitCode;

    }

 

    #endregion

    #region 윈도우 서비스 중단하기 - StopWindowService(serviceName)

 

    /// <summary>

    /// 윈도우 서비스 중단하기

    /// </summary>

    /// <param name="serviceName">서비스명</param>

    /// <returns>처리 결과</returns>

    public static int StopWindowService(string serviceName)

    {

        Process process = GetProcess("sc.exe", $"stop {serviceName}");

 

        process.Start();

 

        process.WaitForExit();

 

        return process.ExitCode;

    }

 

    #endregion

    #region 윈도우 서비스 제거하기 - DeleteWindowService(serviceName)

 

    /// <summary>

    /// 윈도우 서비스 제거하기

    /// </summary>

    /// <param name="serviceName">서비스명</param>

    /// <returns>처리 결과</returns>

    public static int DeleteWindowService(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

}

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요