現在のディレクトリで構成ファイルを検索するWindowsサービスがあります。
だから私はdirectory.getcurrentdirectiry()
を使用しますが、サービスディレクトリの代わりに戻ります
c:\windows\system32
サービスディレクトリを取得する理由と方法を教えてください。
Directory.GetCurrentDirectory()
を使用しないでください。 C:\ Windows\System32が返されるというまったく同じ問題がありました。代わりにこれを使用してください:
Path.GetDirectoryName(Application.ExecutablePath);
コードに次の行を含めることにより、現在のディレクトリをサービスの実行元のディレクトリに設定できます。
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
これの重要な部分は次のとおりです。
System.AppDomain.CurrentDomain.BaseDirectory
サービスが実行されているディレクトリへのパスを返します。
これを試して:
System.Reflection.Assembly.GetEntryAssembly().Location
フルパスからディレクトリを取得する:
var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directoryPath = Path.GetDirectoryName(location);
windowsサービスの作成と比較した場合の非常にばかげた問題:)