v2rayN을 두 번 클릭해도 창이 뜨지 않거나, 실행 직후 종료되거나, 업데이트 후 열리지 않는 경우에 적용할 수 있습니다. 먼저 UI 프로세스 충돌과 코어 실행 실패를 구분한 뒤 런타임, 패키지 아키텍처, 쓰기 권한, 사용자 설정을 확인합니다. Windows를 중심으로 안내하며, macOS의 앱 권한과 아키텍처 문제는 별도로 다룹니다. 진행 중에는 먼저 백업하고, 한 번에 한 가지 조건만 바꿔 구독과 라우팅 설정이 사라지지 않도록 하세요.
1. 프로그램이 종료된 건지, 창이 숨겨졌거나 코어가 실패한 건지 확인
프로그램이 열리지 않는다고 해서 반드시 충돌한 것은 아닙니다. v2rayN은 기본 창을 닫은 뒤에도 시스템 트레이에서 실행될 수 있고, 이미 실행 중인 인스턴스가 있으면 새 창이 열리지 않을 수도 있습니다. Windows에서는 작업 표시줄의 숨겨진 아이콘을 확인한 다음 작업 관리자의 ‘세부 정보’에서 v2rayN.exe를 찾으세요. 프로세스가 계속 실행 중이라면 트레이 메뉴에서 기본 창을 복원해 보세요. 연달아 두 번 클릭해 문제를 더 복잡하게 만들지 마세요.
| 확인된 증상 | 먼저 의심할 항목 | 다음 단계 |
|---|---|---|
| 프로세스가 잠깐 나타났다가 사라짐 | 런타임, 권한 또는 설정 문제 | 실행 출력과 시스템 이벤트 확인 |
| 프로세스는 실행 중인데 기본 창이 보이지 않음 | 트레이로 최소화됐거나 창 위치에 문제가 있음 | 트레이에서 창 복원; 외부 모니터를 분리한 뒤 다시 확인 |
| UI는 열리지만 로그에 코어 종료가 표시됨 | 코어 파일, 생성된 설정 또는 수신 포트 문제 | UI 런타임을 재설치하기보다 코어의 첫 번째 오류 확인 |
| TUN을 켰을 때만 종료되거나 오류가 발생함 | 관리자 권한, 드라이버 또는 가상 네트워크 어댑터 문제 | 먼저 TUN을 끄고 일반 프록시 모드가 작동하는지 확인 |
계속 진행하기 전에 트레이 메뉴에서 프로그램을 종료하세요. 창이 응답하지 않으면 작업 관리자에서 해당 프로세스를 끝내세요. 프로그램 폴더 전체를 복사하고, 현재 버전에서 실제로 사용하는 사용자 데이터 폴더도 백업하세요. 구독 주소, 노드 UUID, 비밀번호, 개인 키는 민감 정보이므로 스크린샷을 찍거나 로그를 공유할 때 가려야 합니다.
2. 실행 오류를 확인하고 필요한 .NET 런타임 설치
Windows 프레임워크 종속 패키지는 해당 .NET 런타임을 시스템에 설치해야 실행되지만, 자체 포함 패키지에는 일반적으로 런타임이 포함되어 있습니다. ‘컴퓨터에 .NET을 설치한 적이 있다’는 이유만으로 런타임 문제를 배제하지 마세요. 데스크톱 앱에는 Microsoft.WindowsDesktop.App이 필요할 수 있으며, Microsoft.NETCore.App이나 ASP.NET Core 런타임만 설치한 것으로는 대체되지 않습니다. x64와 ARM64도 각각 맞는 런타임이 필요합니다.
압축을 푼 프로그램 폴더에서 PowerShell을 열고 아래 명령을 실행하세요. 첫 번째 명령은 프로그램 출력을 확인하고, 두 번째는 현재 감지되는 런타임을 나열하며, 세 번째는 패키지에 지정된 런타임 요구 사항을 확인합니다. 일부 GUI 프로그램은 터미널에 오류를 출력하지 않으므로 화면에 아무것도 표시되지 않는다고 실행이 정상이라고 단정할 수 없습니다.
.\v2rayN.exe
dotnet --list-runtimes
Get-ChildItem -Filter "*.runtimeconfig.json" | Get-Content
dotnet 명령을 찾을 수 없다고 해서 런타임이 반드시 설치되지 않은 것은 아닙니다. 명령 검색 경로가 아직 갱신되지 않았을 수도 있고, 자체 포함 패키지는 시스템 런타임이 필요하지 않을 수도 있습니다. 패키지 유형과 실행 메시지를 함께 확인하세요. runtimeconfig.json에서 framework 또는 frameworks의 name, version을 확인합니다. 예를 들어 Microsoft.WindowsDesktop.App이 필요한 패키지라면 Microsoft에서 제공하는 해당 주 버전의 데스크톱 런타임을 설치해야 합니다. 요구 사항을 우회하려고 설정 파일의 버전 번호를 수정하지 마세요.
오류: You must install or update .NET to run this application.
원인 및 해결: 필요한 런타임을 찾지 못한 상태입니다. 오류 창에 표시된 프레임워크 이름, 버전, 아키텍처를 확인한 뒤 해당 데스크톱 런타임을 설치하고 다시 실행하세요. 최신 주 버전 하나를 설치해도 구버전 주 버전 요구 사항이 충족되지 않을 수 있습니다.
오류: The framework 'Microsoft.WindowsDesktop.App' was not found.
원인 및 해결: Windows 데스크톱 프레임워크가 없거나 설치된 아키텍처가 프로그램과 맞지 않습니다. 다운로드한 패키지의 x64 또는 ARM64 표기를 확인하고, 같은 아키텍처와 필요한 주 버전에 맞는 .NET Desktop Runtime을 설치하세요.
오류: This app can't run on your PC
원인 및 해결: Windows에서 표시하는 일반적인 실행 오류로, 운영체제와 실행 파일의 호환성 문제일 수 있습니다. ‘설정’ → ‘시스템’ → ‘정보’에서 시스템 종류를 확인하고, 현재 패키지가 지원하는 시스템 요구 사항을 살펴보세요. 이 오류를 노드 문제로 단정하지 마세요.
결론: 실행 메시지에 표시된 프레임워크를 기준으로 확인
프레임워크 이름, 주 버전, 아키텍처를 먼저 확인한 뒤 누락된 항목을 설치하세요. 런타임을 설치한 뒤에도 종료된다면 새 오류를 기록해 다음 원인을 살펴보세요. 여러 버전을 무작정 반복 설치하지 마세요.
3. 압축 해제 상태와 폴더 쓰기 권한 확인
압축 파일 미리보기 창에서 실행 파일을 바로 두 번 클릭하면 실행 파일만 임시로 풀리고, 주변의 종속 라이브러리나 리소스, 코어 파일은 준비되지 않을 수 있습니다. 먼저 프로그램을 종료하고 패키지 전체를 별도 폴더에 압축 해제한 다음 그 폴더에서 실행하세요. 업데이트할 때 서로 다른 아키텍처나 UI 패키지의 파일을 한 폴더에 섞어 덮어쓰지 마세요.
- 쓰기 가능한 폴더 만들기: 예를 들어 파일 탐색기의 주소 표시줄에
%LOCALAPPDATA%를 입력하고 독립 테스트용v2rayN-test폴더를 만드세요. 보호된 시스템 폴더, 네트워크 공유 폴더, 동기화 중인 폴더는 피하세요. - 쓰기 권한 확인: 프로그램이 실제로 사용하는 데이터 폴더에 텍스트 파일을 하나 만들고 저장한 뒤 삭제하세요. 액세스가 거부되면 현재 계정의 권한과 보안 소프트웨어의 폴더 보호 기록을 확인하세요.
- 패키지 전체 다시 압축 해제: 기존 폴더는 그대로 두고, 같은 출처와 아키텍처의 완전한 패키지를 새 폴더에 압축 해제하세요. 압축 해제 중 오류가 발생한다면 먼저 압축 파일 손상이나 디스크 문제를 확인하세요.
- 차단 기록 확인: Windows에서 ‘Windows 보안’ → ‘바이러스 및 위협 방지’ → ‘보호 기록’을 열어 파일이 격리됐는지 확인하세요. 먼저 파일 출처와 경고 내용을 확인하고, 보호 기능 전체를 바로 끄지 마세요.
일반적인 UI 실행을 위해 관리자 권한을 계속 사용할 필요는 없습니다. ‘관리자 권한으로 실행’해야만 열리는 경우에는 대개 쓰기 위치나 액세스 권한 문제가 해결되지 않은 상태입니다. TUN처럼 관리자 권한이 필요한 기능은 별도로 판단하세요. 먼저 일반 권한으로 기본 창이 열리는지 확인하면 권한 차이로 인한 오진을 줄일 수 있습니다.
오류: Access to the path ... is denied.
원인 및 해결: 프로그램이 접근하려는 경로가 거부된 상태입니다. 오류에 표시된 경로가 핵심 단서입니다. 설정, 로그, 임시 파일 중 무엇에 해당하는지 확인한 뒤 해당 위치의 권한을 수정하거나 현재 계정에서 쓸 수 있는 데이터 위치로 옮기세요.
4. 손상된 설정을 격리하고 구독 및 라우팅 데이터 보존
업데이트 중단, 시스템의 비정상 종료, 디스크 공간 부족으로 읽을 수 없는 설정이나 데이터베이스가 남을 수 있습니다. 이때 프로그램 파일을 반복해서 덮어써도 원래 위치에 손상된 데이터가 남아 있어 해결되지 않을 수 있습니다. 먼저 해당 패키지가 데이터를 어디에 저장하는지 확인하세요. 일부 버전은 프로그램 폴더의 guiConfigs 같은 폴더를 사용하지만, 다른 패키지는 사용자 설정 위치를 사용할 수 있습니다. 실제 파일과 로그 경로, 해당 버전의 안내를 기준으로 판단하세요. 오래된 가이드에 나온 특정 파일명을 보고 무작정 삭제하지 마세요.
- 완전히 종료: v2rayN과 함께 실행된 관련 코어 프로세스를 종료하세요. 프로그램을 닫을 때 이전 상태가 디스크에 다시 저장되는 것을 방지할 수 있습니다.
- 백업 복사: 데이터 폴더 전체를 다른 위치에 복사하고 프로그램 버전, 데이터 경로, 작업 시간을 기록하세요. 노드 데이터가 데이터베이스에 저장될 수 있으므로 JSON 파일 하나만 백업하지 마세요.
- 이름을 바꿔 격리: 확인된 데이터 폴더의 이름을 변경하세요. 예를 들어 기존 이름 뒤에
-backup-20260909를 붙입니다. 대상은 하나만 변경하고, 위치를 확신할 수 없다면 먼저 로그를 확인하세요. 시스템 폴더를 한꺼번에 옮기지 마세요. - 실행 확인: 프로그램이 기본 데이터를 생성하도록 두세요. 기본 설정에서는 안정적으로 열리지만 이전 데이터를 복원한 뒤 다시 종료된다면 설정 또는 데이터베이스 호환성 문제로 범위를 좁힐 수 있습니다.
- 나누어 복원: 먼저 노드 하나를 가져와 테스트하고, 다음으로 구독을 복원한 뒤 사용자 지정 라우팅, DNS, 기타 고급 옵션을 처리하세요. 항목을 하나씩 복원할 때마다 재시작하세요.
기본 설정에서도 계속 종료된다면 백업을 복원하고 실행 환경이나 시스템 이벤트를 확인하세요. 파일을 계속 삭제하지 마세요. 오류에 JSON 파싱 실패가 명시된 경우에는 백업 사본에서 쉼표, 따옴표, 파일 잘림 여부를 확인할 수 있습니다. 데이터베이스 읽기·쓰기 오류는 텍스트 편집기로 직접 수정하지 않는 것이 좋습니다.
5. UI가 열리면 코어와 포트 충돌 확인
v2rayN은 관리 UI이며, 실제 프록시 연결은 Xray 같은 코어가 담당합니다. 기본 창은 열리는데 코어 프로세스만 종료된다면 코어 파일, 설정 생성, 수신 포트를 확인해야 합니다. VMess나 VLESS 노드의 연결 시간 초과는 보통 연결 단계에서 발생하므로 데스크톱 런타임을 재설치해도 해결되지 않습니다.
버전에 따라 포트와 인바운드 형식이 다를 수 있습니다. 먼저 ‘설정’ → ‘매개변수 설정’에서 로컬 수신 포트를 찾거나 코어가 생성한 설정의 인바운드 포트를 확인하세요. 아래 명령은 설정에서 10808을 사용하는 경우에만 적용됩니다. 실제 포트가 다르면 명령의 숫자도 같은 값으로 바꾸세요.
Get-NetTCPConnection -State Listen -LocalPort 10808 |
Select-Object LocalAddress, LocalPort, OwningProcess
출력된 OwningProcess는 프로세스 ID입니다. 작업 관리자에서 해당 ID를 확인할 수 있습니다. 출력이 없다는 것은 프로그램 전체가 정상이라는 뜻이 아니라, 이번 조회에서 해당 TCP 포트의 수신 대상을 찾지 못했다는 의미입니다. 이전 코어나 다른 인스턴스가 포트를 사용 중이라면 해당 프로그램을 정상 종료하거나 설정에서 비어 있는 포트로 변경하세요. 수동 프록시를 사용하는 앱의 설정도 함께 변경해야 합니다.
- 로그에 address already in use가 표시됨: 먼저 포트 점유와 중복 실행을 확인하세요. 원격 서버 포트를 바꾸지 마세요.
- 로그에 코어 파일이 없다고 표시됨: 완전한 패키지에 해당 코어가 포함되어 있는지, 보안 소프트웨어가 파일을 격리했는지 확인하세요.
- 로그에 설정 파싱 실패가 표시됨: 최근 추가한 사용자 지정 설정을 잠시 되돌리고 노드 하나와 기본 라우팅으로 다시 테스트하세요.
- TUN에서만 실패함: TUN을 끄고 시스템 프록시를 확인한 다음, 관리자 권한 요청과 네트워크 어댑터 및 드라이버 상태를 각각 점검하세요.
6. macOS 실행 문제는 Windows와 별도로 확인
macOS용 v2rayN은 Windows 데스크톱 런타임을 사용하지 않으므로 Windows Desktop Runtime을 설치해도 Mac 앱 실행 문제는 해결되지 않습니다. 먼저 Apple 메뉴의 ‘이 Mac에 관하여’에서 프로세서 종류를 확인하고, Apple Silicon 또는 Intel 프로세서에 맞는 패키지를 선택하세요. 시스템에서 아키텍처가 호환되지 않는다고 표시되면 설정을 반복해서 바꾸기보다 맞는 패키지로 교체하세요.
- 앱이 올바른 위치에 설치되지 않음: 패키지 안내에 따라 압축을 풀거나 복사한 뒤 안정적으로 사용할 앱 폴더에 넣으세요. 임시 압축 해제 위치를 계속 사용하는 폴더로 삼지 마세요.
- 시스템에서 실행을 차단함: 다운로드 출처를 확인하고 ‘시스템 설정’ → ‘개인정보 보호 및 보안’에서 해당 안내를 살펴보세요. 현재 앱에 대한 명확한 경고만 처리하고 시스템 보안 검사를 전역으로 끄지 마세요.
- 백그라운드에서 이미 실행 중: ‘활성 상태 보기’에서 v2rayN이 실행 중인지 확인하고 메뉴 막대에서 창을 복원하세요.
- 실행 직후 충돌: ‘콘솔’을 열어 관련 충돌 보고서를 확인하세요. 예외 유형, 앱 버전, 아키텍처를 기록한 다음 사용자 설정 격리 여부를 판단하세요.
Mac에서도 ‘앱이 열리지 않는 문제’와 ‘코어가 시작되지 않는 문제’를 구분해야 합니다. 기본 창은 정상인데 시스템 프록시나 TUN을 켰을 때만 문제가 발생한다면, 문제가 시작된 동작과 권한 요청을 기록한 뒤 해당 기능을 확인하세요. Windows의 레지스트리, 데스크톱 런타임, 폴더 경로를 Mac에 그대로 적용하지 마세요.
7. 복구 확인 및 자주 묻는 질문
창이 복원된 것은 첫 단계일 뿐입니다. Windows에서 Win + R을 누르고 eventvwr.msc를 입력한 뒤 ‘Windows 로그’ → ‘응용 프로그램’에서 실행 시각에 해당하는 .NET Runtime 또는 Application Error 기록을 찾으세요. 예외 유형, 오류 모듈, 발생 시각을 저장하세요. 이벤트 ID는 문제를 좁히는 참고 자료일 뿐, ID만으로 무엇을 재설치할지 결정하면 안 됩니다.
최신 .NET을 설치했는데도 왜 계속 종료되나요?
최신 주 버전이 프로그램에서 요구하는 주 버전을 대신할 수는 없습니다. 실행 메시지나 runtimeconfig.json을 다시 확인해 Windows 데스크톱 프레임워크가 필요한지, 런타임 아키텍처가 프로그램과 일치하는지 살펴보세요. 세 항목이 모두 맞다면 응용 프로그램 이벤트와 설정을 확인하세요.
삭제 후 다시 설치하면 구독이 사라지나요?
데이터 저장 위치와 삭제 방식에 따라 다릅니다. 작업 전에 프로그램을 종료하고 데이터 폴더 전체를 복사하세요. UI를 열 수 있다면 필요한 항목을 별도로 내보내세요. 프로그램을 다시 압축 해제하는 것만으로 구독이 백업됐다고 생각하지 마세요.
새 폴더에서는 열리는데 원래 폴더는 어떻게 해야 하나요?
새 폴더에서 실행된다는 것은 프로그램이 시작할 조건을 갖췄다는 의미일 뿐, 권한 문제와 이전 데이터 문제 중 무엇이 원인인지는 아직 알 수 없습니다. 새 인스턴스가 이전 데이터를 계속 읽지 않는지 확인한 다음 구독과 라우팅을 나누어 가져오세요. 여러 번 재시작해 확인할 때까지 원래 폴더는 보관하세요.
복구 후 프로그램은 열리지만 브라우저에서 인터넷이 안 됩니다. 어떻게 해야 하나요?
먼저 코어 로그를 확인한 다음 시스템 프록시와 실제 수신 포트를 점검하세요. 충돌 전에 남은 시스템 프록시가 이미 중지된 로컬 포트를 가리킬 수 있습니다. Windows에서 ‘설정’ → ‘네트워크 및 인터넷’ → ‘프록시’를 열어 수동 프록시 주소가 현재 클라이언트 설정과 일치하는지 확인하세요.
결론: 단계별 재현 결과로 복구를 마무리
먼저 기본 설정으로 실행, 종료, 재실행이 되는지 확인하세요. 그다음 노드 하나로 연결을 테스트하고, 마지막으로 구독, 라우팅, TUN을 복원하세요. 문제를 문의할 때 운영체제 버전, 패키지 아키텍처, 자체 포함 여부, 전체 예외 유형, 이미 진행한 격리 테스트를 함께 전달하면 ‘실행 후 종료됨’이라고만 설명하는 것보다 원인을 찾기 쉽습니다.