Que no cree el archivo Service_Test.txt suele deberse a una de estas tres causas claras, especialmente en servicios:
🧨 1. El servicio no tiene permisos para escribir en C:\ServiceLogs\
Aunque tú puedes escribir ahí, el servicio corre por defecto como LocalSystem, que tiene permisos algo diferentes, especialmente en discos NTFS modernos.
✅ Solución:
Dale permisos de escritura a Todos (Everyone) sobre la carpeta:
Crea manualmente C:\ServiceLogs\.
Clic derecho → Propiedades → Seguridad → Editar permisos.
Añade Todos (Everyone) y dale control total o al menos “Modificar”.
🧨 2. El directorio no existe y ForceDirectories falla silenciosamente
Aunque ForceDirectories(...) se supone que lo crea, en contexto de servicio puede fallar sin lanzar excepción (por seguridad del sistema).
✅ Solución:
Crea manualmente la carpeta antes de arrancar el servicio:
No lo hagas depender del código.
✅ Debug temporal: escribe en archivo del sistema
Como prueba temporal, cambia la ruta a algo más accesible:
Código Delphi
[-]
cFile := 'C:\Windows\Temp\Service_Test.txt';
Si ahí sí te crea el archivo, entonces el problema es 100% de permisos en C:\ServiceLogs.
✅ Alternativa limpia: usar carpeta pública
Si no quieres lidiar con permisos, escribe aquí:
Código Delphi
[-]cFile := IncludeTrailingPathDelimiter(GetEnvironmentVariable('PUBLIC')) + 'Documents\Service_Test.txt';
Esto apunta a algo como:
Código Delphi
[-]C:\Users\Public\Documents\
Que suele tener permisos de escritura incluso para servicios.