9
votes

Comment lire un fichier texte d'un service Windows?

J'ai fait un service Windows installé dans un C: \ Program Files \ Mon service code>. Avec l'exécutable, j'ai un fichier XML qui est installé dans le même répertoire. Ce fichier XML est utilisé par le service pour obtenir des informations définies par l'utilisateur.

Dans le code du service, j'ai lu le fichier comme s'il était local à l'exécutable. Exemple: P>

DataSet ds = new DataSet();
ds.ReadXml("Foo.xml");


3 commentaires

duplicailler possible de Comment puis-je Recherchez le répertoire d'installation d'un service Windows à l'aide de C #?


Juste une considération, vous ne devrait pas Stocker les paramètres d'application configurables dans le répertoire des fichiers de programme comme accès à modifier ce chemin nécessite le privilège. Envisagez plutôt d'utiliser ApplicationData / localApplicationData .


@Quintinrobinson - merci pour le rappel! +1


3 Réponses :


0
votes

Cela vous obtiendra ce dont vous avez besoin xxx


3 commentaires

... Sauf que vous ne voulez pas de savoir un chemin d'accès à l'utilisateur, l'utilisateur peut changer d'installation.


Je veux éviter de coder le chemin du fichier. Je veux que la référence au fichier soit relatif à l'exécutable.


Ouais, cela ne fonctionne pas, car il renvoie le chemin complet de l'assemblage, y compris le nom du fichier d'assemblage actuel lui-même. Vous auriez besoin de supprimer cela avant que cette approche ne fonctionnerait.



15
votes

Utilisez ceci:

System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Foo.xml");


0 commentaires

0
votes

Le répertoire de service de service Windows est C: \ Windows \ System32.

Pour lire votre fichier XML comme prévu, vous devez faire comme ci-dessous p>

DataSet ds = new DataSet(); 
ds.ReadXml(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "Foo.xml")); 


0 commentaires