Before installing, check your Windows architecture and choose the Desktop or WPF release. Extract all files, install any required runtimes, import your subscription, select a server, enable the system proxy, and verify that traffic reaches its destination. This guide covers first-time setup and launch failures after an upgrade, and separates issues with the interface, core, local listener, and system proxy so you can troubleshoot the right layer.
Choose a release: WPF or Desktop
WPF is a Windows UI technology, and the WPF release of v2rayN keeps the classic desktop workflow. The Desktop release uses a cross-platform interface. This is a difference in interface and packaging—not in proxy protocols—and it does not mean one release is faster. Performance with the same server also depends on the core, routing, transport settings, and network conditions.
Desktop release
RecommendedA good first choice if you’re new to v2rayN or prefer a cross-platform interface. Before downloading, check the release notes for supported Windows versions, processor architectures, and dependencies. The word “Desktop” alone doesn’t guarantee compatibility.
Best for: first-time installs and users who prefer a cross-platform interface.
WPF release
Keeps the classic Windows interface and suits users who already know that workflow. WPF does not automatically mean support for every older Windows version; check the release notes for runtime and system requirements.
Best for: users familiar with the classic interface and an established Windows setup.
Open Windows Settings → System → About and check “System type.” Choose an x64 package for most x64 systems; on ARM64 devices, use the native ARM64 package when available. A 64-bit system is not necessarily x64, and the runtime architecture must match the client architecture.
Download and extract: use a writable program folder
Choose the Windows release on the client downloads page. Packages may be installers or archives, so follow the instructions for the file you downloaded: run an installer and follow its prompts, or fully extract an archive before launching the main program. Don’t run it from the archive preview window.
-
Check your architecture
In Windows Settings → System → About, confirm whether your system is x64 or ARM64. Then check the download page for the matching interface and architecture; don’t guess from the icon or file size.
-
Extract all files
Right-click the archive and select “Extract All,” for example, to a writable folder such as
D:\Tools\v2rayN. Keep all included subfolders—don’t copy onlyv2rayN.exe. -
Launch for the first time
Open the main program. If it asks for a runtime, note the framework name, major version, and architecture shown in the message. Close the program, install the matching dependency, and try again.
-
Check the core
Open Settings → Parameter Settings and review the core-related options available in your version. Check the logs after starting a connection. If the core executable can’t be found, make sure the package was fully extracted and check your security software’s quarantine history.
-
Keep the working folder
Create a shortcut only after confirming that settings save correctly. Before upgrading, exit the old process and back up your configuration. Test the new version in a separate folder, and don’t mix program or core files from different releases.
Avoid placing a portable folder that needs to write configuration files in a protected system directory. The system proxy usually does not require administrator privileges. Running as administrator all the time won’t restore missing files and may hide a folder permissions problem. For features such as TUN, follow the program’s prompts for any required permissions.
Runtime requirements: match the error message, not a guess
Having .NET installed doesn’t necessarily mean all required runtimes are present. Framework-dependent releases check for a specific runtime series. Self-contained releases usually include the runtime they need, but still require a compatible operating system and native components. Check the release notes to see whether a package is self-contained; the file extension won’t tell you.
| Message or symptom | Check first | What to do |
|---|---|---|
| Prompt to install or update .NET | Framework name, major version, and architecture in the prompt | Get the matching runtime from Microsoft’s official distribution channels. An SDK is not needed just to run the app. |
| Microsoft.WindowsDesktop.App is missing | Check whether only the standard .NET Runtime is installed | Install the Windows Desktop Runtime specified in the prompt and check that its architecture matches (x64 or ARM64). |
| A DLL is missing | Whether extraction completed, quarantine history, and the exact file name | Download a complete copy of the release and identify the missing dependency. Don’t piece together DLLs from untrusted download sites. |
| Window flashes and closes | Check for an old process, system compatibility issues, and startup logs | Test a complete package in a new folder, then use the logs or Windows event records to investigate. |
| Interface opens, but the core won’t start | Core file path, listening port, and generated configuration | Troubleshoot the core; an open interface does not mean a proxy connection is active. |
Different .NET major versions can coexist, but installing a newer major version does not guarantee that an older version’s requirements are met. In particular, WPF may require the Windows Desktop Runtime rather than the standard .NET Runtime. Don’t follow outdated instructions to install a specific runtime version; match each requirement in the startup prompt.
Import your first subscription: update the list, then select a server
Set up your subscription after the main program opens. A subscription URL retrieves and updates a group of server configurations; links such as vmess:// and vless:// usually describe a single node. Pasting a single-node link into the subscription URL field is not the same as importing it from the clipboard.
- Create a group: Open Subscription Group → Subscription Group Settings, add a group, and give it a recognizable name. Paste the full subscription URL into the address field and save.
- Fetch nodes: Return to the main window, open the Subscription Group menu, and choose the relevant subscription update option. Depending on your version, you may see options to update the current group, update all groups, or update through a proxy. Follow the menu labels in your version.
- Check the result: Make sure nodes appear in the group, then check the logs for network errors, authentication failures, or unsupported formats. Seeing the group name does not mean its subscription content downloaded successfully.
- Select a server: Right-click the target node and choose Set as Active Server. Confirm that the active server matches your selection, then test the connection.
If you don’t have a working proxy yet, don’t automatically choose “Update through proxy.” If you can’t reach the subscription URL directly, first confirm that the URL is valid and your network can access it; then update through an existing working connection. Conversely, if your proxy is already working, there’s no need to switch to a direct update just to follow a particular guide.
If the subscription updates successfully but the connection fails, check whether the service has expired, whether your device clock is accurate, and whether the node settings are complete. VMess and VLESS are protocol names; a subscription is a way to distribute configuration. Importing one won’t fix settings that don’t match the server.
System proxy and local ports: route traffic through the running core
First confirm that the core is running. In v2rayN, open the System Proxy menu and select Automatically Configure System Proxy. To verify the system proxy status, check Windows Settings → Network & Internet → Proxy. The system proxy only applies to apps that honor that setting; it does not route traffic from every process.
The two cards below are troubleshooting examples, not default settings for every version. Open Settings → Parameter Settings to check the actual listening port and inbound type. Use the HTTP test commands below only after confirming that the port supports HTTP or mixed proxy traffic. Don’t copy an old guide’s port and assume it applies to your setup.
Example client listener
- Listen address
127.0.0.1- Local port
10808- Inbound type
- HTTP or mixed inbound
- LAN access
- Disabled
For local use only, keep the listener bound to loopback to avoid exposing the proxy to your local network.
System proxy checklist
- Proxy address
127.0.0.1- Proxy port
- Must match the actual HTTP inbound
- Core status
- Running successfully
- Server status
- Active server selected
The system proxy is just the entry point. Routing rules determine whether traffic is proxied, sent directly, or blocked.
If the local port is already in use, the core may fail to start while Windows keeps the previous proxy address. The browser then sends requests to a port with no working listener, making it look as though the entire network is down. After changing the port, update the system proxy too, and check whether apps with their own proxy settings still point to the old port.
Test the connection: check the listener, proxy, and routing in order
Check the local port first, then test a request through the proxy, and finally test the app you actually use. Run these commands in PowerShell. They assume you’ve confirmed that an HTTP proxy is listening at 127.0.0.1:10808; if your setup uses a different port, replace it first. The destination is for demonstration only, and one website’s result doesn’t tell you whether all sites are reachable.
Get-NetTCPConnection -LocalPort 10808 -State Listen
Test-NetConnection 127.0.0.1 -Port 10808
curl.exe --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://www.microsoft.com/
- No listener shown: Check the core logs for port conflicts, configuration errors, or missing files. Don’t keep switching browser settings.
- Local port is reachable, but the request fails: Check the node, DNS, TLS, and routing. A reachable TCP port only confirms that a local entry point exists; it does not prove the remote connection works.
- Explicit proxy request succeeds, but the browser fails: Check the browser’s own proxy settings, extensions, policies, and whether another program changed the system proxy.
- Only some apps fail: Check whether those apps honor the system proxy. Consider TUN only if needed; disabling the firewall is not a routine fix.
curl.exe returning an HTTP status code means the request reached an HTTP response endpoint. A status such as “access denied” does not mean the local proxy failed to start. Also, if routing rules send the test domain directly, the core may connect directly even when you explicitly specify the local proxy. To confirm that traffic actually goes through the node, check both the matched routing rule and the connection logs.
Testing approach: try the system proxy first, then consider TUN if needed
Everyday browser use
- Start by enabling automatic system proxy configuration.
- Check whether the browser uses the system proxy.
- Use the node logs to verify routing and access results.
Apps that ignore the system proxy
- First check whether the app supports its own proxy settings.
- Consider TUN if you need to route more traffic.
- Before enabling it, check permissions, DNS, and conflicts with other VPNs.
Change one layer at a time. After the system proxy works, move on to more advanced traffic routing and split-tunneling needs.
Upgrading and exiting: avoid stale proxies, mixed files, and lost settings
Before upgrading, note the interface type, actual listening port, routing choices, and configuration location. Exit the program and back up your configuration. Portable and installer packages may store settings in different locations, so don’t assume they’re beside the main program. Subscription URLs often contain access credentials; store backups in a secure folder and don’t expose them in troubleshooting screenshots.
| Common issues | What to do first | What to avoid |
|---|---|---|
| Configuration problems after launching the new version | Keep the old folder and a backup. Test the new version in a separate folder, then migrate using a supported method. | Overwriting files from two different interface releases into the same folder. |
| Address is already in use | Find the process using the port, close duplicate instances, or change the listening port. | Launching multiple copies in quick succession and having them compete for the same port. |
| Browser can’t connect after exiting | Check Windows proxy settings and remove any proxy pointing to a stopped local service. | Resetting all network settings without first identifying the cause. |
| Fewer nodes after a subscription update | Check group filters, update logs, and the content returned by the subscription provider. | Immediately deleting all local settings and losing useful troubleshooting information. |
| Settings save only when run as administrator | Check permissions on the configuration folder and move it to a location writable by your user account. | Running with elevated privileges indefinitely instead of fixing the permissions. |
Before exiting normally, you can select Clear System Proxy from the System Proxy menu. If the program crashes, open Windows Settings → Network & Internet → Proxy and check whether the manual proxy or script still points to a stopped local service. If your organization has a required proxy policy, note the original settings first and don’t clear them indiscriminately.