A única maneira, no Windows, que você pode ter um processo iniciado por um usuário continuar executando após o logoff (ou seja, o que "nohup" faz) é iniciá-lo através de uma "tarefa agendada" ou como um serviço do Windows. Quando o usuário fizer logoff de todos os processos em sua sessão de logon, será eliminado.
Se você gosta de experimentar o método "Tarefas agendadas", convém saber como criá-las programaticamente. A classe WMI Win32_ScheduledJob pode fazê-lo. A documentação é fornecida em detalhes aqui: link Basicamente, você está procurando fazer (descaradamente roubado da Microsoft):
Set objService = GetObject("winmgmts:\.")
Set objNewJob = objService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create("Program-to-execute.exe", "ugly-formatted-time-string-per-Microsoft-docs",True ,1 OR 4 OR 16, , ,JobID)
If Err.Number = 0 Then
Wscript.Echo "New Job ID: " & JobID
Else
Wscript.Echo "An error occurred: " & errJobCreated
End If
Para conceder ao "joe user" a capacidade de criar tarefas agendadas, você terá que modificar a permissão na pasta% SystemRoot% \ Tasks. Veja aqui algumas informações sobre isso: link