Go to file
diadmin 091881a5c4
테스트 빌드 옵션 추가: -p:TestBuild=true 시 관리자 권한 없이 실행 (화면 자동 점검용)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013U497kUNL8ArhV7jkzCpKa
2026-10-27 04:10:30 +00:00
Core 원격 모니터링 기능 추가 (작업 중, 검토 반영 전) 2026-10-27 03:44:31 +00:00
Views 원격 모니터링 기능 추가 (작업 중, 검토 반영 전) 2026-10-27 03:44:31 +00:00
Windows 원격 모니터링 기능 추가 (작업 중, 검토 반영 전) 2026-10-27 03:44:31 +00:00
.gitignore JJServiceManager 1.0.0: Windows 서비스 기동/종료 관리 프로그램 2026-10-27 01:56:10 +00:00
JJServiceManager.csproj 테스트 빌드 옵션 추가: -p:TestBuild=true 시 관리자 권한 없이 실행 (화면 자동 점검용) 2026-10-27 04:10:30 +00:00
Program.cs 원격 모니터링 기능 추가 (작업 중, 검토 반영 전) 2026-10-27 03:44:31 +00:00
README.md 실행 파일 이름을 JJServiceManagerEnt.exe로 변경 2026-10-27 03:48:12 +00:00
app.ico JJServiceManager 1.0.0: Windows 서비스 기동/종료 관리 프로그램 2026-10-27 01:56:10 +00:00
app.manifest JJServiceManager 1.0.0: Windows 서비스 기동/종료 관리 프로그램 2026-10-27 01:56:10 +00:00
app.test.manifest 테스트 빌드 옵션 추가: -p:TestBuild=true 시 관리자 권한 없이 실행 (화면 자동 점검용) 2026-10-27 04:10:30 +00:00
build.bat JJServiceManager 1.0.0: Windows 서비스 기동/종료 관리 프로그램 2026-10-27 01:56:10 +00:00

README.md

JJServiceManager (Ent)

Windows 서비스 기동/종료 관리 프로그램 (C# WPF, .NET 8) v1.1부터 다른 PC의 등록된 서비스를 원격으로 모니터링·기동·종료할 수 있습니다.

실행 파일

파일 크기 필요 조건
JJServiceManagerEnt.exe (런타임 필요판) 약 2MB .NET 8 Desktop Runtime (x64) 설치
JJServiceManagerEnt.exe (단독 실행판) 약 65MB 없음

항상 관리자 권한으로 실행됩니다 (실행할 때 UAC 창이 한 번 뜹니다).

화면

초기화면

  • 추가: 내 PC의 Windows 서비스 전체 목록에서 관리할 서비스 선택
  • 삭제: 체크한 내 PC 서비스를 목록에서 제외 (Windows 서비스 자체는 건드리지 않음, 원격 서비스는 삭제 불가)
  • Start / Stop: 체크한 서비스(원격 포함)를 차례로 시작/중지
  • Windows 강제종료 / Windows 재시작: 확인창에 표시된 무작위 숫자 6자리를 그대로 입력해야만 실행 (붙여넣기 불가, 설정에서 버튼 숨김 가능)
  • 설정, 종료(JJServiceManager 완전 종료, 서비스는 그대로 유지)
  • 서비스 목록
    • 전체 탭: PC별 묶음 ("내 PC", "192.168.0.10 / SERVER01" …), PC별 접기/펼치기
    • PC 탭 추가 콤보박스: 고른 PC만 보여주는 탭을 옆에 추가, ✕로 닫기 (다음 실행 때도 유지)
    • 원격 서비스 앞에는 IP/hostname 표시
    • 서비스마다 Start / Stop / Status / Log, 상태 자동 갱신 (초록=실행 중, 빨강=중지됨)
  • 서비스 줄 우클릭(내 PC): 로그 파일 지정 / 로그 폴더 지정 / 경로 해제
  • 하단 로그: 작업 기록 (번호 + 체크박스)
    • 전체선택 / 전체취소 / 복사(체크한 줄)
    • 화면클리어: 새 로그를 화면 맨 위부터 출력, 위로 스크롤하면 이전 로그가 보임, 번호는 이어짐
    • 로그 클리어: 화면의 로그를 모두 지우고 번호를 1번부터 다시 시작
    • 로그 파일은 어떤 경우에도 지우지 않음
  • Esc: 설정에 따라 트레이로 / 완전 종료 (창의 X 버튼도 같음)

추가 선택 화면

  • 설명 / 상태 / 이름 / 시작유형 열, 열 제목을 누르면 정렬(▲▼)
  • 전체선택 / 전체취소 / 선택완료, 검색
  • 이미 등록된 서비스는 노란색 + 체크된 상태로 표시

로그창

  • 내 PC: 로그 파일 또는 폴더(가장 최근 수정 파일 자동 추적) 지정
  • 원격: 대상 PC에서 지정한 로그를 실시간으로 받아서 표시 (연결이 끊겼다 다시 붙으면 새 로그부터 이어서)
  • 인코딩 자동/UTF-8/CP949, 띄우기 방식: 개별 창 / 탭 / 좌우 분할 비교

원격 모니터링

모든 PC에 같은 프로그램을 설치하고, 설정에서 역할을 각각 켜고 끕니다. 한 PC가 두 역할을 동시에 할 수 있습니다.

역할 설정 탭 하는 일
대상 원격 접속 허용 다른 PC의 접속을 받아 이 PC에 등록된 서비스만 보여주고 Start/Stop 실행
관리 관리 대상 PC 등록한 PC에 접속해 그 PC의 서비스를 초기화면에 표시

통신 방식

방식 기본 포트 설명
SSH (프로그램 내장) 2222 OpenSSH 설치 없이 프로그램 안의 SSH 서버 사용
지정 포트 (TLS) 9988 프로그램끼리 TLS로 암호화해 통신
  • 인증: 대상 PC에서 정한 접속 비밀번호 (대상 PC에는 해시로만 저장, 관리 PC에는 Windows 계정으로 암호화해 저장)
  • 서버 지문(인증서) 확인은 하지 않음 (암호화만)
  • 비밀번호를 5분 동안 10번 넘게 틀리면 잠시 접속 거부
  • 원격 접속 허용을 켜면 Windows 방화벽에 TCP 포트를 자동으로 열고, 끄면 규칙(JJServiceManager Remote)을 지움

사용 순서

  1. 대상 PC: 설정 → 원격 접속 허용 → 켜기, 방식·포트·접속 비밀번호 입력 → 확인
  2. 관리 PC: 설정 → 관리 대상 PC → 다른 PC 관리 켜기 → 대상 IP, 같은 방식·포트, 비밀번호 입력 → [연결 테스트] → [추가] → 확인
  3. 초기화면에 대상 PC 묶음이 나타나고, hostname은 자동으로 채워짐

숫자 6자리 확인

설정 → 일반에서 내 PC / 원격 Start/Stop 각각 켜고 끔 (기본: 내 PC 끔, 원격 켬). 여러 서비스를 한꺼번에 Start/Stop할 때는 한 번만 입력합니다.

테스트용 중복 실행 (정식 릴리즈 시 삭제 예정)

같은 PC에서 두 개를 띄워 원격 기능을 시험할 때:

JJServiceManagerEnt.exe --instance 2
  • 창 제목에 [테스트 인스턴스 2] 표시
  • 설정 폴더를 따로 씀: %AppData%\JJServiceManager_instance2
  • 기본 포트: 지정 포트 9989, SSH 2223
  • 코드에서 [테스트용 중복 실행] 주석이 붙은 부분을 지우면 기능이 사라집니다.

설정

탭 항목
일반 컴퓨터 시작시 기동, 단축키(기본 Ctrl+Shift+A), 서비스 시작시 로그보기, 로그창 띄우기, Esc, Windows 종료키, 숫자 확인(내 PC/원격)
원격 접속 허용 켜기/끄기, 통신 방식, 포트, 접속 비밀번호, 이 PC의 IP 안내
관리 대상 PC 다른 PC 관리 켜기/끄기, 대상 IP·방식·포트·비밀번호, hostname 자동, 연결 테스트

저장 위치

  • 설정: %AppData%\JJServiceManager\settings.json
  • 작업 로그: %AppData%\JJServiceManager\logs\yyyy-MM-dd.log (추가만 하고 삭제하지 않음)

빌드

.NET 8 SDK 설치 후 build.bat 실행 → publish 폴더에 두 가지 exe 생성

  • 화면 정의는 Views/*.xaml이며 실행 시 읽어들입니다 (XAML 컴파일 없음).
  • 원격 통신: Core/Remote/ (SSH 라이브러리: Microsoft.DevTunnels.Ssh, MIT)