2009-09-23 7 views
5

Escribo un servicio de Windows que necesita conservar algunos datos durante los reinicios/reinicios del servicio. Actualmente estoy escribiendo los archivos en un directorio devuelto por Application.UserAppDataPath, pero eso no parece darme una respuesta consistente. ¿Cómo debo determinar el lugar correcto para escribir los datos?¿En qué parte del sistema de archivos debe mantenerse un servicio de Windows?

+0

Cada servicio se ejecuta con privilegios de algunos usuarios. ¿No deberían almacenarse los datos en applicationData del usuario (supongo que se refiere a él como Application.UserAppDataPath)? ¿Cuál es el problema con esta ubicación? –

+0

El servicio se está ejecutando como LocalSystem. Sin embargo, la cuenta LocalSystem no tiene su propio directorio en "Documentos y configuraciones"; en mis pruebas usa el directorio LocalService, pero recibimos informes de que el servicio algunas veces almacena datos en un lugar y luego los busca en otro. En el registro, parece que la ruta AppData de LocalSystem es% USERPROFILE% \ Application Data, por lo que parece que% USERPROFILE% no nos está dando una respuesta coherente. –

Respuesta

4

Depende si su servicio se ejecuta con la cuenta del sistema o con una cuenta de usuario específica.

  • Sistema cuenta. Almacene los archivos en la carpeta CommonApplicationData:

    cadena pathForSystem = Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData);

  • Cuenta de usuario. Almacene los archivos en la carpeta ApplicationData:

    cadena pathForUser = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData);

4

Si quiere que sea coherente (es decir, es independiente del usuario) intente Application.CommonAppDataPath.

+0

Estoy de acuerdo. Si el servicio se está ejecutando como LocalSystem, tiene sentido almacenar datos en la ruta de datos independiente del usuario. –

+1

Application.CommonAppDataPath se incluye en System.Windows.Forms.dll. ¿Realmente necesito formularios de referencia del servicio de Windows? – qub1n

Cuestiones relacionadas