v2rayN for Windows: Installation and Setup Guide | WPF vs. Cross-Platform Desktop Edition

Set up v2rayN on Windows, from choosing a desktop edition and extracting files to importing a subscription and configuring the system proxy. Compare the two editions and troubleshoot common startup, security software, and permissions issues.

At a glance

This guide is for first-time v2rayN users on Windows and anyone moving from the WPF edition to the cross-platform desktop edition. Choose an edition and system architecture, then extract the files, check runtime requirements, update your subscription, activate a node, and configure the system proxy. If the app fails to start, a port is in use, or your browser cannot connect, use the symptom checklist to troubleshoot instead of reinstalling repeatedly.

Choosing between the WPF and cross-platform desktop editions

v2rayN manages nodes, subscriptions, and proxy settings; the proxy core associated with your configuration handles the actual connection. The WPF and cross-platform desktop editions differ primarily in their interface technology and supported environments, not in proxy protocols. Whether a node works depends on the core, configuration parameters, and server status—not just the interface edition.

Cross-platform desktop edition

Recommended

For a first-time setup, consider the cross-platform desktop edition listed on the download page. Its interface is more consistent across Windows, macOS, and Linux, making settings easier to find if you switch computers later. Choose an installer that matches your operating system and architecture.

Best for: first-time users and anyone who switches between desktop operating systems.

Classic WPF edition

This edition uses a traditional Windows desktop interface and suits users who are already comfortable with its menus and lists. Choosing it does not require an older proxy protocol or guarantee compatibility with older versions of Windows. Check the release package's system and runtime requirements.

Best for: Windows users who know the WPF interface and want to keep its familiar layout.

Do not extract both editions to the same folder or enable the system proxy or TUN in both at once. Before testing the other edition, clear the system proxy and exit the current app from the system tray. This prevents configuration conflicts and makes it clear which process is listening on each port.

Check your system architecture and extract to a writable folder

In Windows, open Settings → System → About and check System type. Most Intel and AMD desktop PCs use the x64 package. For ARM devices, check architecture support on the download page and in the release notes; “64-bit” alone is not enough to identify the right package. Find all downloads on the Download clients page.

  1. Check the package

    Make sure the package is for Windows and matches your architecture and preferred edition—WPF or cross-platform desktop. If you downloaded an installer, follow its setup wizard. If you downloaded an archive, extract it using the steps below.

  2. Extract all files

    Extract the entire archive to a permanent folder that your account can write to, such as Apps\v2rayN in your user folder. Do not run the app from your archive utility's preview window.

  3. Keep the files together

    Keep the main program, bundled configuration, and core-related folders in their original layout. Copying only v2rayN.exe to your desktop can leave it without required dependencies or core files. Create a shortcut if you want quick access.

  4. First launch

    Start the app as a standard user and leave TUN disabled for now. Once the main window opens, check the logs for configuration write failures, missing files, or core startup errors.

App won't start? Check the runtime message first

A double-click that opens no window does not mean the node is unavailable. The app may not have reached the connection stage at all. Check whether it is minimized to the system tray, missing a runtime, incompatible with your system architecture, or blocked by security software. Open Task Manager to see if a v2rayN process is already running, then check the taskbar's notification area.

What you seeCheck firstWhat to do
A .NET requirement appearsThe runtime name, major version, and architecture shown in the messageInstall the runtime required by the current release notes. If the WPF package requires the Windows Desktop Runtime, installing only the base Runtime is not enough.
“This app can't run on your PC” appearsYour Windows version and the app's architectureCheck your system type and the package requirements again. Repeatedly launching the app as an administrator is unlikely to help.
A file or proxy core is missingWhether the archive was fully extracted or a file was quarantinedCheck the extracted files and Windows Security Protection History. If needed, download the complete package again from a trusted source.
Access is denied when saving settingsFolder permissions, read-only attributes, and files in useExit the app, move it to a folder your account can write to, and make sure only one instance is running.

Runtime requirements can change between releases, so avoid relying on a major version number copied from an old guide. A self-contained package with a bundled runtime works differently from one that depends on a system runtime. Follow the startup message and release notes for your package. Restart the client after installing the runtime and check whether the error persists.

Importing your first subscription: update it, then activate a node

A subscription URL and a single-node share link are different kinds of input. A subscription is usually an HTTPS URL that retrieves a list of nodes; VMess and VLESS share links describe individual configurations. Pasting a webpage URL, login page, or text with extra instructions into the subscription field can leave the node list empty after an update.

  1. Create a subscription group

    In the main window, open Subscription Groups → Subscription Group Settings, then choose Add or “+”. Enter a name that will help you recognize the group, paste the full subscription URL into the address field, and save. Some interface versions place this option under a group management button; look for the same function name.

  2. Update the subscription

    If this is your first setup and you do not have a working proxy yet, choose Subscription Groups → Update All Subscriptions (without proxy). If the URL is only accessible through a proxy, set up a working configuration first, then choose Update All Subscriptions (through proxy).

  3. Check the node list

    Check the update log for a successful result and make sure the newly created group is selected. If the list is empty, check whether the subscription has expired, returns a login page instead of node data, or is hidden by a group filter.

  4. Activate a node

    Select the node you want to use, then choose Set as Active Server from the right-click menu. Check the logs to make sure the associated core starts, then test the connection. Selecting a row in the list does not necessarily activate it.

Subscription URLs often contain account access tokens. Do not post them in public chats or share screenshots that show the full URL with strangers. When troubleshooting, record the error message, protocol, and update time instead. Before sharing client logs, remove any node addresses or user identifiers they may contain.

Node test results are only clues. A successful TCP connection does not confirm that TLS, authentication, and subsequent requests work. A timeout may also mean the test target is unreachable. After activating a node, check the logs and try an actual web request instead of switching nodes based only on latency.

System proxy setup: check the local listening port first

Open Settings → Parameter Settings and check the local listening ports and their inbound protocols. The three numbers below are examples for identifying settings; not every release listens on all of these ports. Do not copy an HTTP port from an old guide into a newer release. Use the values shown in your current settings and startup logs.

10808
Common local listening values; check the protocol in your current configuration
10809
An HTTP port used by some older configurations—not a default for every version
127.0.0.1
The local loopback address, not the remote node address

Automatically Configure System Proxy does not mean every app will use the proxy or that the fastest node will be selected. Apps that follow the Windows system proxy will use this setting; others may connect directly. Client routing rules determine whether requests that reach the core use the proxy or connect directly.

When to use the system proxy and TUN

Start with the system proxy
  • A good first step for testing browser access.
  • Standard local listeners usually do not require administrator permissions.
  • Check the proxy address, port, and routing rules.
Try TUN only if needed
  • For apps that need traffic routed through a virtual network adapter.
  • May require elevated permissions and changes to routing or DNS settings.
  • Test it separately after the standard proxy is working.

Leave TUN disabled during initial setup. Once the basic connection works, configure which apps should be routed through it. This keeps node issues separate from virtual adapter problems.

Port conflicts and permission errors: troubleshoot by symptom

If the logs show address already in use or a bind failure, check the listening port before deleting any configuration. Common causes include an older process still running in the system tray or another client using the same port. The commands below only check local TCP listeners; they do not change network settings.

netstat -ano -p tcp | findstr LISTENING | findstr ":10808"
tasklist /FI "PID eq 1234"

The last column in the first command is the PID. In the second command, 1234 is an example; replace it with the PID returned by the first command. Confirm that the local address is using port 10808 before checking what the process does. Do not end a process just because its output contains the same number.

Verify your setup and back up before upgrading

Check startup, proxy behavior, and shutdown. Loading a webpage once only confirms that one request worked at that moment. Also make sure closing the client does not leave a broken proxy setting behind and that your configuration is restored after a restart. Following the checklist below makes later changes easier to pinpoint.

  1. Check startup: Exit and reopen the app. Confirm that the subscription group, active node, and local port are still set, and that the logs show no repeated core startup failures.
  2. Check the proxy: Enable the system proxy and visit sites that should use the proxy as well as sites that should connect directly. Use the logs to verify routing; a cached webpage alone does not prove the connection is working.
  3. Check shutdown: Clear the system proxy before exiting, then confirm that your regular network connection still works. If the app closes unexpectedly, check Windows proxy settings and remove any leftover manual proxy.
  4. Back up your settings: Exit the app before upgrading and back up the current version's user settings and subscription groups. For a portable setup, back up the entire folder; for an installed version, back up the data from its actual user data location.
  5. Check migration: When switching editions, use the client's built-in import and export features if available. If there are no clear migration instructions, import your subscriptions again and verify key settings. Do not merge the two application folders by copying one over the other.

Backups may contain subscription tokens and node credentials, so store them somewhere only you can access. If only the interface is acting up after an upgrade, keep the logs and original backup, then check the release notes. If webpages won't load, troubleshoot in this order: local listener, system proxy, and node logs. For basic steps, see Quick Start; for more complex connection issues, visit Troubleshooting.

Download v2rayN