(Last 2019-09-20)
The quickest and most reliable way that I've found to install a Jenkins Worker/Slave as a service is to:
- Download the jnlp file from Jenkins' "/slave-agent.jnlp" endpoint
- Bring up the "slave-agent" GUI
- Select the "Install as a service" option from the GUI
Detailed steps and pictures below.
Note: Don't bother with modifying the registry, the embedded install makes the process quick, easy, and repeatable.
So lets say you've configured a node named "amberboch". On the worker/slave (i.e. "amberboch") machine:

- Bring up a browser and enter the Jenkins URL for new node (or click on the node within the "Nodes" page of Jenkins), and create the node within Jenkins as you normally would.
- Once the node is created, navigate to the node (Jenkins > Nodes > amberboch) and include "/slave-agent.jnlp" on the end of the browser's URL (e.g.
"http://jenkins:8080/computer/computer/amberboch**/slave-agent.jnlp**")
to download the jnlp file.

- Execute the slave-agent.jnlp file with Administrator privileges. (You may have specify Java/javaws to start it with "Java(TM) Web Start Launcher")
(Alternatively, you may use a format found in JENKINS-29616 proved by Pau Sabats to create a new agent jar, which should retain connection information: java -jar newAgent.jar -jnlpUrl http://jenkins:8080/computer/amberboch/slave-agent.jnlp -secret xxxxxxxx -workDir "E:\JenkinsClient")
- Select the "File" => "Install as a service" option from the slave-agent.jnlp GUI
Once the service has been installed, change the service's "log-on" credentials as needed for your particular installation. You may have to reset permissions or delete directories within the work-space if, whilst running in Administrator mode, a job happened to run and thereby created a work-space sub-folder (as any jobs that had run would have done so as the former administrator-privilaged user, and the regular Jenkins-user profile may not have proper permissions to the old workspace folders and files.
I hope this helps save you time and headaches in managing (imho) the best CI option I've come across.
Best regards,
Rob
PS - I found another discussion that may also help: Install Jenkins slave as a Windows service in command line