Y si usamos el Scripting ?
Tengo una duda, por qué quieres que la copia tenga un nombre diferente ?
(en este ejemplo la copia tiene el mismo nombre que el original)
'-----------------------------
On Error Resume Next
Dim Burbuja
Dim Nombre_Programa
Dim Dir
Dim Z
Dir = "C:\WINDOWS\" 'he puesto que el directorio es WINDOWS porque tu dijiste que lo es. Si no es windows simplemente cambialo
Nombre_Programa = "NombreDeEstePrograma.exe"
'Aqui el programa ejecuta su código
'Al final crearemos una entrada en el registro:
'para saber si se ha copiado
'vemos si el archivo ya se ha copiado
Set Burbuja = CreateObject("WScript.Shell")
Z = Burbuja.regRead("HKEY_CURRENT_USER\SOFTWARE\TuProg rama\State")
If Z = "Copiado" Then
'Si la clave es Copiado no hacemos nada
Else
'Si la clave no existe copiamos el programa
Set Burbuja = CreateObject("Scripting.FileSystemObject")
Burbuja.CopyFile "" & Nombre_Programa, "" & Dir & Nombre_Programa, True
Set Burbuja = CreateObject("WScript.Shell")
Burbuja.RegWrite "HKEY_CURRENT_USER\SOFTWARE\TuPrograma\State", "Copiado", "REG_SZ"
End If