For readers setting up v2rayN on Windows 10 or Windows 11 for the first time, or those who can import nodes but still cannot route system traffic through the proxy. This guide covers package selection, extraction folders, subscription imports, core startup, system proxy settings, port checks, and clean shutdowns. By the end, you can complete and verify a basic setup independently.
Desktop vs. WPF: Choose Based on Your Runtime Environment
v2rayN Desktop and WPF packages use the same concepts for subscriptions, nodes, and routing. The main differences are UI technology, runtime dependencies, and Windows integration. They are not protocol versions and do not change the parameters of VMess, VLESS, or other nodes. Check your system architecture and runtime requirements first; do not infer the UI version from the node type.
For Windows 11, standard 64-bit processors, and fresh installations, Desktop is usually the better choice for staying aligned with newer UI releases. Choose WPF if you prefer classic Windows controls, already know the WPF workflow, or need to preserve an existing operating path. Devices with ARM64 processors require a package explicitly labeled ARM64; an x64 package is not a substitute.
Selection criterion: continuity with the newer UI or classic Windows workflow
Desktop
- For new deployments on Windows 10 and Windows 11
- Choose x64 or ARM64 based on the processor architecture
- Menu layouts may differ from screenshots in older guides
- Subscriptions, routing, and core settings follow the same logic
WPF
- Retains the classic Windows desktop control layout
- Suitable for users familiar with the tray menu
- Framework-dependent packages require the matching .NET Desktop Runtime
- Existing subscriptions and routing settings can be retained during migration
Bottom line: choose Desktop for a first-time setup; choose WPF when you need to keep the classic workflow. Always follow the architecture and package labels on the download page.
Download and First Launch: Folder Permissions Matter More Than Installation Steps
v2rayN is typically distributed as a compressed archive. The reliable process is to download it completely, extract everything into a fixed folder, and launch the main program from that extracted directory. Do not run it by double-clicking inside an archive preview or drag out only the executable; the core, configuration folder, and dependencies must keep their original relative locations.
-
Check Your System Architecture
Open Windows “Settings” → “System” → “About” and check “System type.” The common result is x64; ARM devices should use the corresponding ARM64 package.
-
Download the Matching Build
Go to the download page and choose the Desktop or WPF package under Windows. After downloading, confirm that the file extension matches the label on the page.
-
Extract Everything
Extract the files to a fixed location, such as
D:\Tools\v2rayN. Keep the path short where possible and make sure your account has read and write access. -
Launch the Main Program
Run the v2rayN main program from the extracted directory. If no window appears, check the taskbar notification area first; some versions start directly in the system tray.
-
Choose the Core Type
Go to “Settings” → “Parameters” → “Core type” and choose Xray or v2fly according to the subscription nodes. VLESS Reality generally requires an Xray core that supports the relevant fields.
- If Windows Security blocks the first launch, verify the file source and download page, then decide whether to run it according to the system prompt.
- When migrating from an older version, exit the old program and copy the complete configuration folder as a backup first. Do not overwrite files while both versions are running.
- If the UI opens after an upgrade but nodes will not start, recheck “Settings” → “Parameters” → “Core type” and confirm that the core files loaded correctly.
Import Subscriptions and Nodes: Verify the Data Before Enabling the System Proxy
A subscription link distributes nodes and some additional information in bulk; it does not mean a connection has already been established. After importing, update the subscription, select a node, start the core, and explicitly choose a system proxy mode. If the node list is empty, troubleshoot subscription parsing first instead of repeatedly switching the system proxy.
VLESS + Reality
- Core type
- Xray
- Transport
- TCP
- Flow
- xtls-rprx-vision
- Fingerprint
- Use the value provided by the subscription
The public key, short ID, Server Name, and port must all be complete. Missing any required field can cause the handshake to fail.
VMess + WS + TLS
- Core type
- Xray or v2fly
- Transport
- WebSocket
- Path
- Follow the subscription configuration
- TLS
- Enable it according to the node fields
The hostname, path, and TLS Server Name must match the server configuration; verifying only the server address and port is not enough.
Complete Subscription Import Sequence
- Open “Subscription groups” → “Subscription group settings,” create a group, and paste the complete subscription URL.
- Save it, then select “Subscription groups” → “Update all subscriptions.” If the current network cannot access the subscription URL directly, choose to update through a proxy when an existing node is available.
- Check whether nodes appear in the main list, then verify that the protocol, address, port, and remarks are displayed correctly.
- Select the target node, use the UI to set it as the active server, and then start the core.
- Wait about 5–10 seconds and check the status bar or logs for a successful local listener message.
When pasting a single share link manually, use the client’s “Import batch URLs from clipboard” option. VMess and VLESS links organize their fields differently, so do not force one protocol’s parameters into another. A QR code is simply another carrier for configuration data; when reading it from the clipboard or a file on Windows, verify the result in the node list.
System Proxy and Local Ports: A Successful Connection Does Not Mean Traffic Is Routed
After the v2rayN core starts, it listens for proxy traffic on a loopback address. A common setup uses 127.0.0.1:10808 as the SOCKS or mixed port, while older configurations may use 10809 for HTTP. Always follow the local listener value in “Settings” → “Parameters” and the startup log.
- Right-click the v2rayN icon in the taskbar notification area and open “System proxy.”
- Choose “Set system proxy automatically” so applications that follow the Windows system proxy use the local listener port.
- In “Settings” → “Parameters,” check the local port and make sure it is not already used by another program.
- Open the core log and look for successful listening, established connections, or explicit handshake errors; do not rely only on node latency values.
- Before exiting, choose “System proxy” → “Clear system proxy,” then close the program to prevent Windows from retaining an invalid loopback address.
netstat -ano | findstr :10808
powershell -Command "Test-NetConnection 127.0.0.1 -Port 10808"
The first command checks whether port 10808 is listening and returns the corresponding process PID; the second checks whether a local TCP connection can reach that port. If TcpTestSucceeded is False, focus on whether the core started, whether the port changed, and whether the log reports a binding error. If the port is reachable but the browser still cannot connect, check the system proxy and routing mode.
| Observed result | Explanation | Next step |
|---|---|---|
| 10808 is not listening | The core did not start successfully, or the local port has changed | Check the core log and parameter settings |
| 10808 is listening normally | The local proxy entry point is available | Verify the system proxy and active node |
| Port already in use | Another process has bound the same port | Stop the conflicting process or change the listener port |
| Handshake timed out | The node parameters, network path, or server response is abnormal | Try another node and verify the protocol fields |
Common Installation Problems: Diagnose the Symptom Instead of Reinstalling
Most installation issues fall into four areas: the archive was not fully extracted, the runtime components do not match, the core process did not start, or the Windows system proxy still points to an old port. Reinstalling changes program files but cannot automatically fix subscription fields, routing rules, or stale proxy settings, so identify the affected layer from the symptoms first.
No window appears after double-clicking—is it running?
Expand the taskbar notification area and check whether v2rayN is already in the tray, then open Task Manager to inspect the process. If it exits immediately, read the log in the program directory and confirm that the archive was fully extracted rather than run directly from the archive.
What should I do if .NET runtime components are missing?
Note the major version and architecture shown in the message, such as .NET 8 and x64, then install the matching Windows Desktop Runtime. If the download page also offers a package with the runtime included, use a complete package matching the processor architecture.
The subscription updated successfully—why is the node list still empty?
Open the subscription group settings and confirm that the group is enabled and that there are no spaces before or after the link. Then check the HTTP status and parsing message in the update log. If the response is a login page or ordinary web text, the address is not a subscription feed the client can parse.
The node has latency, but why can’t webpages open?
Check the active server, core log, 10808 listening status, and “System proxy” → “Set system proxy automatically” in sequence. A successful latency test only confirms one type of probe; it does not prove that browser traffic has entered the node.
How do I restore the network after exiting v2rayN?
Restart v2rayN, choose “System proxy” → “Clear system proxy” from the tray menu, and then exit the program. You can also open Windows “Settings” → “Network & Internet” → “Proxy” and confirm that the manual proxy no longer points to 127.0.0.1 and a closed port.
The runtime is fine, but the core still exits
- Go to “Settings” → “Parameters” → “Core type” and confirm that the selected core supports the current node protocol and transport fields.
- Check whether the program directory is writable and whether security policies are blocking the core child process from starting.
- Read the earliest error in the log rather than only the last line; port conflicts and invalid configuration fields are usually recorded clearly before the core exits.
- Temporarily change the local port from 10808 to 10818 and restart the core. This quickly reveals whether a fixed port conflict exists.
Stable Setup After Completion: Keep One Working Fallback
Once the basic connection works, there is no need to add extensive routing rules immediately. Keep one confirmed working node, one original subscription, and the default routing set, then modify DNS, split routing, and automatic updates one at a time. Changing only one variable per test makes it possible to identify the setting responsible from the logs.
- In “Settings” → “Routing settings,” start with the built-in basic rules. After confirming that direct and proxied destinations behave as expected, add custom rules.
- Keep the original subscription group and do not batch-edit server addresses, ports, UUIDs, public keys, or transport paths.
- Before updating v2rayN, exit the core, clear the system proxy, and copy the configuration folder. After updating, test a known-working node first.
- Automatic subscription updates can run on a fixed schedule, but the frequency should not be excessive. Once every 24 hours is sufficient for routine use; update manually when nodes change frequently.
- Keep the complete log segment from the latest startup through the failure, including the time, node protocol, core type, and local port for reproducibility.
Basic Working Baseline
- System
- 64-bit Windows 10/11
- Local port
- 10808
- Subscription updates
- Every 24 hours
- Routing
- Built-in basic rules
Establish a repeatable connection baseline before adding DNS and custom split-routing rules.
Troubleshooting Record Fields
- Time of occurrence
- To the nearest minute
- Node protocol
- VMess or VLESS
- Core type
- Xray or v2fly
- Log range
- From startup to the error
These four details are enough to distinguish UI settings, core configuration, local port, and remote connection issues.