Ver Mensaje Individual
  #5  
Antiguo 11-07-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Reputación: 3
navbuoy Va por buen camino
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:

Código:
C:\ServiceLogs\
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.
Responder Con Cita