2010-04-05 11 views
8

Había hecho un servicio de Windows en Visual Studio 2008 en C#. dentro del servicio que había escrito sólo el código de una sola líneaEl servicio de Windows no funciona

try 
{ 
    System.Diagnostics.Process.Start(@"E:\Users\Sk\Desktop\category.txt"); 
} 
catch { } 

Luego agregar el instalador proyecto & cambie la propiedad cuenta serviceProcessInstaller1 como sistema local también cambiar la ServiceInstaller1 empezar propiedad type como automático. luego construyo el proyecto. Tuve éxito. Después de eso, agregué otro proyecto que fue proyecto de configuración. Había agregado la salida del proyecto principal &. Había agregado la acción personalizada como "Salida primaria de DemoWindowsService (Activo)". Luego construí el archivo setup.setup fue compilado exitosamente. Luego instalo la configuración & luego se dirigió a los servicios para iniciar el service.service indicado correctamente pero no estaba realizando la tarea. me había registrado la ruta es correcta & También probé a hacer

System.Diagnostics.Process.Start(@"E:\Windows\system32\notepad.exe") pero aún resultado es same.i intentó mucho, pero no conseguir la respuesta.

+0

¿Dónde se escribe el código que usted ha mencionado (en cuyo método me refiero)? ¿Cuál es tu objetivo real? ¿Por qué quieres simplemente abrir el bloc de notas? ¿Podría explicar por favor? –

Respuesta

2

Si no funciona, quizás sea porque se produjo una excepción. Sin embargo, dado que está ocultando todas las excepciones con su bloque try/catch, nunca sabrá qué pasa.

Deshágase del bloque try/catch y vea si eso lo ayuda a saber qué sucede.

+0

Bien, estaba a punto de comentar acerca de ese bloque de catch vacío. –

+0

@ prateeksaluja20: Además, verifique 'eventvwr' para ver si está mal. –

+0

@KMan: ¡excepto que el visor de eventos no mostrará nada debido al bloque catch! –

6

Los servicios de Windows no pueden interactuar con el escritorio de manera predeterminada, y el Bloc de notas es una aplicación interactiva.

Si abre el Administrador de tareas , sospecho verá el notepad.exe proceso en ejecución después de haber iniciado su servicio, y que su servicio es hacer lo que piensa, simplemente no es visible.

Puede cambiar un servicio para interactuar con el escritorio, haga clic en él en los Servicios de MMC (Start -> Run -> Services.msc), y comprobando el Permitir a los servicios que interactúen con el escritorio en la ficha Log On.

Confiando en esta opción es no recomendado, ya que Microsoft ha dicho que lo eliminará en las versiones posteriores de Windows.

Tiene sentido si lo piensas bien, ya que un servicio de Windows debe poder usarse incluso si nadie ha iniciado sesión en la computadora (por ejemplo, no hay un "escritorio" para interactuar).

+0

Gracias por su respuesta. – PrateekSaluja

0

¿Ha escrito su única línea de código en el método OnStart() en el servicio? Si lo hizo, cambie su bloque catch al catch (Exception ex) y escriba los detalles de la excepción en el registro de eventos para ver por qué ocurrió la excepción.

Ver Logging Information About Services

Cuestiones relacionadas