How to Install v2rayN on Windows: Extract, Configure the System Proxy, and Fix Common Errors

Download and extract v2rayN, launch it, import a subscription, and configure the Windows system proxy. Includes fixes for missing runtimes, port conflicts, and other common issues.

At a glance

This guide is for first-time v2rayN users on Windows and anyone whose client opens but cannot connect. Follow this order: check your system architecture, fully extract the package, start the core, import a configuration, select an active server, then enable the system proxy and test it. When troubleshooting, check the app, local listener, and remote connection separately. A timeout does not automatically mean you need to reinstall.

1. Check your Windows architecture and package type before downloading

v2rayN is a desktop client for managing server configurations, subscriptions, routing, and core processes; it does not provide remote servers. Before you start, make sure you have a subscription URL you are authorized to use or a complete configuration for a single server. The client alone cannot connect without a valid configuration.

  1. Open Windows Settings → System → About and check System type. Depending on your Windows version, this page may be called System information. Choose the package that matches your system—x64 or ARM64—and do not rely on the processor brand alone.
  2. Go to the Download Center and select Windows. The desktop edition uses a cross-platform interface, while the WPF edition is designed for Windows. Check each download listing for its specific system requirements, dependencies, and package format.
  3. Know whether you have an archive or an installer. This guide covers extracting and running the archive. If you choose an installer, complete the installation and launch the app from its shortcut; do not use the archive's folder-management steps.
  4. Check whether the package includes the runtime and core. Self-contained packages and packages that require a separate runtime have different startup requirements. File size alone does not tell you whether a package is complete.

2. Extract all files to a writable folder, then launch the app

For the archive version, create a dedicated folder such as C:\Tools\v2rayN. A short path makes troubleshooting easier, but Chinese characters in a path do not necessarily cause problems. More importantly, make sure your user account can write to the folder, it will not be removed by temporary-file cleanup, and it does not contain files mixed in from an older version.

  1. In File Explorer, right-click the archive and select “Extract All,” then extract the entire folder to your chosen location. Do not launch the main executable from the archive utility's preview window.
  2. Make sure the main program, all other package files, and subfolders have been extracted before running v2rayN.exe. Copying only the executable may leave required dependencies or core files missing.
  3. If Windows displays a security warning, verify the download source and review the warning details. Do not disable system protection altogether. If a file was quarantined, check Protection history in Windows Security first.
  4. You generally do not need administrator privileges for ordinary system proxy use. Launch the app as a standard user first, and elevate privileges only if a feature requires it and the client prompts you to do so.

After the first launch, the client may save its configuration in the program folder or the user data folder, depending on the version and launch mode. Before upgrading, use the client's backup feature or back up the actual data directory. Do not assume the program folder is the only place where settings are stored.

3. Check the runtime and local listening ports

A visible interface only means the client process has started; it does not confirm that the core is running correctly. Check the status area, logs, and current core status, then open Settings → Parameters to verify the local listening address and ports. Tab names may vary by version; look for SOCKS, HTTP, or mixed listener settings.

10808
Example mixed listener port; check your actual settings
10809
Separate HTTP port used by some older configurations; not a fixed requirement

These numbers are for troubleshooting, not settings that every version must use. If your settings show only a mixed port, it can accept supported HTTP and SOCKS proxy connections. If HTTP and SOCKS use separate listeners, enter the HTTP port when testing an HTTP proxy. For local use only, the listening address should usually remain 127.0.0.1; do not expose it to your local network just to troubleshoot.

Troubleshooting order: check the listener before testing the remote connection

Note the current listening port and check the core logs for startup errors. If you cannot connect to the local port, check the process and port first rather than switching remote servers or repeatedly refreshing the subscription.

If a dialog asks you to install .NET, follow the specified framework name, major version, and architecture. If a WPF package requires the Windows Desktop Runtime, installing only the standard .NET Runtime or a different major version may not be enough. Check the requirements for the build you downloaded.

4. Import a subscription or share link and select an active server

A subscription URL retrieves a list of server configurations; a single share link describes one server. Use the correct import option for each. A successful subscription import does not guarantee a working connection: check that the subscription is valid, the server parameters are complete, and the current core supports the protocol and transport settings.

  1. Add a subscription: Open “Subscription Groups” → “Subscription Group Settings,” add a group, enter a recognizable name and the complete subscription URL, then save. If the interface has an Add Group button, use it to open the same settings.
  2. Update the list: From the “Subscription Groups” menu, select “Update subscriptions.” If no proxy is available yet, try updating without a proxy first. If your network cannot reach the subscription endpoint, follow your provider's instructions or try updating through the proxy once you have a working connection.
  3. Import a single configuration: Copy the complete vmess:// or vless:// share link, then use the corresponding “Import from clipboard” option in the “Servers” menu. VMess and VLESS are different protocols; do not change the link prefix manually.
  4. Select an active server: Choose the server you want from the list, then select “Set as active server” from the context menu or use the equivalent option. Confirm that the status area shows the server you selected.

If the list is empty, check the specific subscription update error first. Then make sure the URL was copied in full, the subscription has not expired, and the response is in a format the client supports. A web login URL used as a subscription URL may return a webpage instead of a node list the client can parse.

5. Enable the system proxy and understand routing

Once the core is running and an active server is selected, open the tray menu and choose “System proxy” → “Set system proxy automatically” or the equivalent option. Windows manual proxy settings should point to the client's local listener. You can check the address and port under Windows Settings → Network & internet → Proxy, but avoid repeatedly changing settings in both places.

For testing, disable browser extensions with their own proxy settings and any custom browser proxy configuration, which may override the system settings. If a browser works but a desktop app does not, first check whether the app has its own proxy settings before considering another way to route its traffic.

Run a command-line test with an explicit port

In PowerShell, run the command below. This example assumes your HTTP or mixed port is 10808. Use curl.exe because some PowerShell environments interpret curl as a different command.

curl.exe --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

This command explicitly specifies the local proxy, so it does not depend on whether the app reads the system proxy settings. Receiving HTTP response headers confirms that this request got a response, but it does not prove that all traffic went through the remote server: the core's routing rules may still send that domain directly. To confirm the outbound route, check the routing logs for the same time period.

6. Common errors: troubleshoot startup, listening, and connection issues separately

Keep the first relevant log entry from around the time of the error; it is more useful than looking only at the final “startup failed” message. The English snippets below are examples; paths, versions, and server addresses vary by environment. Errors at different stages do not all mean the subscription is invalid.

Error: You must install or update .NET to run this application.

Cause and fix: The required runtime is missing, or the installed runtime has the wrong architecture or major version. Note the Framework and Architecture in the prompt, install the runtime required by the package, then close and relaunch the client.

Error: Only one usage of each socket address is normally permitted

Cause and fix: Another process is already using the local address and port the core is trying to bind to. Check whether you launched the client more than once, then identify the process using the port. After confirming what it does, close the conflicting app or change the local listening port and update the system proxy to match.

Error: Failed to connect to 127.0.0.1 port 10808

Cause and fix: The test program could not connect to the specified local port, commonly because the core is not running or the port is incorrect. Check the current listener settings and startup logs. Do not start by changing the remote server's password or protocol.

Error: i/o timeout

Cause and fix: A network operation did not complete before the timeout. It may have occurred during a DNS lookup, remote connection, or subscription request. Use the same log entry to identify the destination and stage, then check the local network, server status, or subscription endpoint as appropriate.

Error: x509: certificate has expired or is not yet valid

Cause and fix: The certificate validity check failed. Your computer's clock may be wrong, or the server certificate may have expired. First correct the time under Windows Settings → Time & language → Date & time, then contact your provider to confirm. Do not hide the problem by bypassing certificate verification.

Find which process is listening on port 10808

netstat -ano | findstr :10808

Check that the Local Address column shows the port you are looking for, and focus on rows marked LISTENING. The last column shows the process PID. In Task Manager, open Details and find the matching PID to identify the program. If there is no listener and the core just reported a startup failure, fix the startup issue first. An existing listener is not necessarily a conflict—it may be the core started by the current client. Do not force-close an unknown process based only on its port number.

7. Four common questions after the initial setup

The subscription updated, so why won't webpages load?

A successful subscription update only confirms that the client retrieved configuration data. Check the active server, core status, and system proxy port in that order, then run an explicit proxy test. If the local connection succeeds but the remote connection times out, check that server's connection logs instead of repeatedly adding the same subscription.

What should I do if my browser loses internet access after I close v2rayN?

Windows may still be pointing to a local proxy that is no longer listening. Restart the client if possible, then select Clear system proxy from the tray's System proxy menu before exiting. If the app will not start, check Windows proxy settings and turn off any manual proxy left behind. If your proxy is managed by your organization, ask your administrator first.

Do I need to run the app as an administrator every time?

Usually not for the current user's system proxy. Run the app without elevation first; for features such as TUN, elevate privileges only when prompted by the client. If the app cannot write to its folder, move it to a location your user account can write to rather than treating permanent elevation as a general fix.

Do I need to import the subscription again after changing a port?

No. The local listening port and the remote server port are different. After changing the local port, restart the relevant core and reapply the system proxy. Also update the local proxy port entered manually in browsers, command-line tools, or other apps.

Download the client