imachavo, creo que sobra el "." de
@ScriptFullPath & ".", piensa que
@ScriptFullPath ya te da todo el nombre con carpeta incluido, en plan "C:\progamas\autoIt\miprograma.exe". Así que poner ese punto al final, o lo ignora o te da un error.
Para encontrar la carpeta Inicio... ¡tú mismo das la solución en el post inicial! En vez de poner el path a mano usa
@StartupCommonDir, esta macro te llevará a la carpeta correspondiente en cada S.O.
De todas maneras te recomiendo el método del registro por una razón: es más fácil de desactivar.
Quitar el archivo copiado a mano es muy fácil, pero el programa tendría que quitarse a sí mismo, y eso no es tan fácil pues se está ejecutando... ¡Yo estoy tonto! Si copias no tienes que copiar el ejecutable,
¡¡¡se pone un acceso directo!!!. Quitar el acceso directo no es problema, Usando el esquema de Nahuel

, incluso con los mismos parámetros (el nombre será ahora el del acceso directo):
Código: Seleccionar todo
Func _IniciarConWindows($n=True, $nombre="Mi aplicacion")
If $n Then
FileCreateShortcut(@ScriptFullPath, @StartupCommonDir & "\" & $nombre & ".lnk", @ScriptDir)
Else
FileDelete(@StartupCommonDir & "\" & $nombre & ".lnk")
EndIf
EndFunc
Lo de
@ScriptDir es para asignar como directorio de trabajo el del script
Yo el parámetro $n lo pondría al final, así se puede omitir cuando sea True, de todas maneras te propongo una mejora, no te la pongo para que lo pienses que es como se aprende: en vez de decir a la función si quieres ponerlo o quitarlo, que mire ella si ya está el acceso directo. Si está lo borra y si no lo pone.
Eso también se puede hacer con el método del registro, se consulta la clave y si está pues la quitas, de lo contrario la insertas.
Respecto a lo del antivirus tienes razón que es un factor más que tienen en cuenta, pero por la misma razón te puede pasar si lo pones en la carpeta Inicio, un buen antivirus controlará todo lo que se arranque con el inicio del sistema, da igual el método que se use.
saludos!