J'ai fait un service Windows installé dans un Dans le code du service, j'ai lu le fichier comme s'il était local à l'exécutable. Exemple: P> 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.
DataSet ds = new DataSet();
ds.ReadXml("Foo.xml");
3 Réponses :
Cela vous obtiendra ce dont vous avez besoin
... 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.
Utilisez ceci:
System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Foo.xml");
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"));
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 i> 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 code> /
localApplicationData code>.
@Quintinrobinson - merci pour le rappel! +1