소개
SingleInstance는 Windows 탐색기에서 여러 파일을 선택했을 때 하나의 프로세스 인스턴스만 실행되도록 하는 프로그램입니다. 선택된 파일마다 프로세스가 시작되지만, 이미 실행 중인 인스턴스가 있다면 파일 목록을 기존 인스턴스로 전달하여 중복 실행을 방지합니다. 이 도구는 컨텍스트 메뉴 명령에서 다중 파일 선택을 지원하기 위해 설계되었으며, 콘솔 창이 보이지 않는 숨김 콘솔 버전도 제공합니다. 공식 GitHub 저장소에서 소스 코드와 빌드 방법을 확인할 수 있습니다.
상세정보
단일 인스턴스 보장
프로그램은 실행 시 이미 동일한 이름의 인스턴스가 실행 중인지 확인합니다. 실행 중이라면, 선택된 파일 목록을 기존 인스턴스로 전달하고 새로 시작하는 인스턴스는 즉시 종료됩니다.これにより、一つのタスクに複数のファイルを渡すシナリオで重複処理を防ぎます。
숨김 콘솔 버전 지원
표준 버전 외에도 singleinstance_hidden.exe라는 버전이 제공되며, 이 버전은 CREATE_NO_WINDOW 플래그를 사용하여 콘솔 창이 전혀 나타나지 않도록 합니다. 이는 Python 스크립트나 기타 CLI 기반 애플리케이션에서 콘솔 플래시를 방지하는 데 특히 유용합니다.
다운로드 및 설치 방법
공식 GitHub 저장소에서 컴파일된 실행 파일을 직접 다운로드할 수 있습니다. 또는 소스 코드를 클론하여 Visual Studio 2022와 함께 제공되는 MSBuild를 사용해 직접 빌드할 수 있습니다.
빌드 명령은 다음과 같습니다:
- 일반 릴리스 빌드:
MSBuild.exe /m:8 /property:Configuration=Release .singleinstance.sln - 숨김 콘솔 버전 빌드:
MSBuild.exe /m:8 /property:Configuration=ReleaseHidden .singleinstance.sln - 자동 빌드 및 테스트 스크립트:
build_singleinstance.ps1
기본 사용법
프로그램은 다음과 같은 형식으로 실행됩니다:
singleinstance.exe "%1" {command} $files [arguments]
여기서 %1은 선택된 첫 번째 파일 경로, {command}는 실행할 대상 프로그램, $files는 선택된 모든 파일 목록을 나타냅니다. 선택적 인수로는 --si-timeout {시간(ms)}이 있으며, 이는 기존 인스턴스 응답을 기다리는 최대 시간을 설정합니다.
이런 경우에 유용합니다
예를 들어, 탐색기에서 여러 텍스트 파일을 선택하고 컨텍스트 메뉴를 통해 P4Merge로 비교하고 싶을 때, SingleInstance를 사용하면 모든 파일이 하나의 P4Merge 인스턴스로 전달되어 효율적으로 비교할 수 있습니다. 마찬가지로, 여러 이미지 파일을 선택하여 하나의 이미지 편집기로 일괄 처리하거나, 여러 스크립트 파일을 하나의 처리기로 전달하는 시나리오에서 유용합니다.
지원 환경·시스템 요구사항
이 프로그램은 Windows에서 실행되며, Visual Studio 2022와 MSBuild를 사용하여 C++ 소스 코드로부터 빌드할 수 있습니다. 숨김 콘솔 버전은 CREATE_NO_WINDOW 플래그를 지원하는 Windows 버전에서 정상 동작합니다.
최신 버전·업데이트
현재 버전은 1.0.0이며, GitHub 저장소의 master 브랜치에서 최신 소스 코드를 확인할 수 있습니다. 저장소에는 자동 빌드 스크립트와 의존성 검사 도구(Yara, BinSkim, ClamAV)를 사용한 보안 검사 과정이 문서화되어 있습니다.
제한 사항·확인 사항
숨김 콘솔 버전(singleinstance_hidden.exe)은 CREATE_NO_WINDOW 플래그 사용으로 인해 일부 백신 소프트웨어에서 inicialmente 경고를 트리거할 수 있습니다. 이는 해당 플래그가 악용 가능성 때문에 오탐지로 분류될 수 있기 때문입니다. 그러나 공식 문서에 따르면, 몇 분 후 백신이 정식으로 허용하며, 로컬에서 직접 빌드한 경우 경고가 발생하지 않는다고 명시되어 있습니다.
레지스트리 설정에서 MultiSelectModel=Player 값을 지정하지 않으면 선택된 파일 수가 제한될 수 있으므로, 컨텍스트 메뉴 명령을 설정할 때 이 값을 반드시 포함해야 합니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


