web-dev-qa-db-ja.com

Windowsサービス-現在のディレクトリを取得

現在のディレクトリで構成ファイルを検索するWindowsサービスがあります。

だから私はdirectory.getcurrentdirectiry()を使用しますが、サービスディレクトリの代わりに戻ります

c:\windows\system32

サービスディレクトリを取得する理由と方法を教えてください。

47
MoShe

Directory.GetCurrentDirectory()を使用しないでください。 C:\ Windows\System32が返されるというまったく同じ問題がありました。代わりにこれを使用してください:

Path.GetDirectoryName(Application.ExecutablePath);

11
puffgroovy

コードに次の行を含めることにより、現在のディレクトリをサービスの実行元のディレクトリに設定できます。

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

これの重要な部分は次のとおりです。

System.AppDomain.CurrentDomain.BaseDirectory

サービスが実行されているディレクトリへのパスを返します。

124
Jed

これを試して:

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

フルパスからディレクトリを取得する:

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

windowsサービスの作成と比較した場合の非常にばかげた問題:)

16
Michael Brennt