2009-09-23 11 views
5

J'écris un service Windows qui doit conserver certaines données lors des redémarrages/redémarrages du service. Actuellement, j'écris les fichiers dans un répertoire retourné par Application.UserAppDataPath, mais cela ne semble pas me donner une réponse cohérente. Comment devrais-je déterminer le bon endroit pour écrire les données?Sur quel système de fichiers un service Windows doit-il conserver ses données?

+0

Chaque service est exécuté avec les privilèges de certains utilisateurs. Les données ne doivent-elles pas être stockées dans applicationData de l'utilisateur (je suppose que vous l'appelez Application.UserAppDataPath)? Quel est le problème avec cet endroit? –

+0

Le service s'exécute en tant que LocalSystem. Toutefois, le compte LocalSystem n'a pas son propre répertoire dans "Documents and Settings"; Dans mes tests, il utilise le répertoire LocalService, mais nous recevons des rapports indiquant que le service stocke parfois des données à un endroit et les recherche ensuite dans un autre. Dans le registre, il semble que le chemin AppData de LocalSystem est% USERPROFILE% \ Application Data, il semble donc que% USERPROFILE% ne nous donne pas de réponse cohérente. –

Répondre

4

Cela dépend si votre service est en cours d'exécution avec le compte système ou avec un compte d'utilisateur spécifique.

  • système de compte. Stockez les fichiers dans le dossier CommonApplicationData:

    chaîne pathForSystem = Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData);

  • compte compte. Stockez les fichiers dans le dossier ApplicationData:

    chaîne pathForUser = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData);

4

Si vous voulez que ce soit cohérent (c'est-à-dire indépendant de l'utilisateur), essayez Application.CommonAppDataPath.

+0

Je suis d'accord. Si le service s'exécute en tant que LocalSystem, il est logique de stocker des données dans le chemin de données indépendant de l'utilisateur. –

+1

Application.CommonAppDataPath est inclus dans System.Windows.Forms.dll. Ai-je vraiment besoin de référence Winforms de Windows Service? – qub1n

Questions connexes