web-dev-qa-db-fra.com

Service Windows - obtenir le répertoire actuel

J'ai un service Windows qui devrait rechercher un fichier de configuration dans son répertoire actuel.

J'utilise donc directory.getcurrentdirectiry() mais au lieu du répertoire de service je reviens

c:\windows\system32

Vous savez pourquoi et comment obtenir le répertoire des services?

47
MoShe

N'utilisez pas Directory.GetCurrentDirectory(). J'ai eu le même problème exact avec C:\Windows\System32 étant retourné. Utilisez-le à la place:

Path.GetDirectoryName(Application.ExecutablePath);

11
puffgroovy

Vous pouvez définir le répertoire actuel sur le répertoire à partir duquel votre service s'exécute en incluant cette ligne dans votre code:

System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

La partie importante de ceci est:

System.AppDomain.CurrentDomain.BaseDirectory

Cela renvoie le chemin d'accès au répertoire à partir duquel votre service s'exécute.

124
Jed

Essaye ça:

System.Reflection.Assembly.GetEntryAssembly().Location
30
coder

obtenir le répertoire à partir du chemin complet:

var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directoryPath = Path.GetDirectoryName(location);

un problème assez stupide en comparaison avec l'écriture d'un service Windows :)

16
Michael Brennt