Ver Mensaje Individual
  #7  
Antiguo 11-07-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Reputación: 3
navbuoy Va por buen camino
El problema clave
Windows 10/11 Home Edition NO permite servicios creados por el usuario de forma convencional (como en Pro).
En concreto:

No soporta por completo la infraestructura de servicios personalizados, especialmente si no usas instaladores con privilegios elevados.

Tu servicio probablemente no se está instalando correctamente, aunque creas que sí arranca.

Si no aparece en services.msc o el Administrador de tareas → pestaña Servicios, entonces no está registrado como servicio del sistema.

¿Por qué aparece en Windows 10 Home pero no en 11?
Windows 10 Home aún permite más tolerancia con servicios mal registrados. Pero:

Aunque aparezca en la lista de servicios, no se ejecuta correctamente.

No tiene permisos de acceso a disco (ni siquiera para escribir logs).

TService se ejecuta en contexto restringido, sin permisos de escritorio, temporales, o acceso a rutas de usuario como C:\Users.

Conclusión
En Windows Home, los servicios hechos en casa no están del todo soportados.

Aunque el código esté bien, no ejecutará correctamente sin configuración y permisos adecuados.

Lo ideal es probar primero como app normal, y luego migrar a servicio en una edición Pro o usando un instalador con sc.exe.


✅ SOLUCIONES POSIBLES
OPCIÓN 1 — Ejecutar como aplicación normal (no servicio) para pruebas
Código Delphi [-]
// Usa esto como prueba en un TForm con un botón

procedure TForm1.Button1Click(Sender: TObject);
var
  myFile: TextFile;
begin
  AssignFile(myFile, 'C:\Temp\test_log.txt');
  Rewrite(myFile);
  WriteLn(myFile, 'Esto sí escribe desde una app normal.');
  CloseFile(myFile);
end;
👉 Si esto funciona, tu problema es 100% que el servicio no se ejecuta correctamente en modo real.

OPCIÓN 2 — Verifica e instala bien el servicio
Abre una consola como Administrador.

Navega a donde está tu .exe del servicio.

Instálalo:

Código:
MyService.exe /install
Luego ábrelo en services.msc, no en el Administrador de tareas.

Asegúrate de que:

Aparece en la lista.

Puedes hacer clic derecho → Iniciar.

No da error al arrancar.

OPCIÓN 3 — Cambia el usuario del servicio
Por defecto, el servicio se ejecuta como LocalSystem, que no puede acceder a carpetas de usuario. Cámbialo:

En services.msc, busca tu servicio.

Clic derecho → Propiedades → pestaña Iniciar sesión.

Marca "Esta cuenta" y pon tu cuenta de usuario de Windows.

Introduce la contraseña.

OPCIÓN 4 — Registra log en el Visor de Eventos (más fiable en servicios)
Agrega esto a WriteLog para registrar en el visor de eventos:

Código Delphi [-]
ReportEvent(
  RegisterEventSource(nil, 'MiServicio'),
  EVENTLOG_INFORMATION_TYPE,
  0, 0, nil,
  1, 0, @PChar(cMsg), nil
);
Es más confiable que escribir a disco bajo LocalSystem.

Última edición por navbuoy fecha: 11-07-2025 a las 21:33:25.
Responder Con Cita