An answer here suggested using Shadow Copy:
How to copy a file while it is being used by other process
But I am not sure if a Shadow Copy is always available.
Are you trying to get the program to launch on Windows Startup? If so you can do so without making a copy:
How to make an exe start at the Windows Startup
Or if you really need to make a copy, then you can make sure the program is not already running, and if it is, ask the user to stop it first:
Check if a specific exe file is running
Edit:
I have found no mention of working directory in the registry's documentation in MSDN. There may be two workarounds:
1. If the executable supports it, you can pass the working directory as a parameter.
2. You can try using a launcher in the registry, e.g. cmd.exe or powershell:
cmd.exe /c [Batch file to change directory and launch EXE]
powershell.exe -windowstyle hidden start-process [Path to EXE] -WorkingDirectory [WorkingDir]
The -windowstyle hidden only works for Powershell V2. You'll otherwise get a console window briefly.