59

Windows サービスの .exe ファイルが動的にインストールされているフォルダーを見つけるにはどうすればよいですか?

Path.GetFullPath(relativePath);

ディレクトリに基づくパスを返しますC:\WINDOWS\system32

ただし、このXmlDocument.Load(string filename)方法は、サービスの .exe ファイルがインストールされているディレクトリ内の相対パスに対して機能しているようです。

4

7 に答える 7

84

試す

System.Reflection.Assembly.GetEntryAssembly().Location
于 2008-10-14T03:57:51.667 に答える
70

これを試して:

AppDomain.CurrentDomain.BaseDirectory

(ちょうどここのように:Windowsサービスのexeパスを見つける方法

于 2012-10-29T20:48:57.000 に答える
39
Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
于 2008-11-14T14:54:26.680 に答える
5

上記の別のバージョン:

string path = Assembly.GetExecutingAssembly().Location;
FileInfo fileInfo = new FileInfo(path);
string dir = fileInfo.DirectoryName;
于 2008-10-14T14:24:16.583 に答える
5

これは、Windows サービスで機能します。

//CommandLine without the first and last two characters
//Path.GetDirectory seems to have some difficulties with these (special chars maybe?)
string cmdLine = Environment.CommandLine.Remove(Environment.CommandLine.Length - 2, 2).Remove(0, 1);
string workDir = Path.GetDirectoryName(cmdLine);  

これにより、実行可能ファイルの絶対パスが得られます。

于 2008-10-14T13:38:32.433 に答える
3

Environment.CurrentDirectory は、プログラムが実行されている現在のディレクトリを返します。Windows サービスの場合、実行可能ファイルが展開された場所ではなく、実行可能ファイルが実行される場所である %WINDIR%/system32 パスを返します。

于 2010-06-11T20:57:57.017 に答える
-4

これにより、実行可能ファイルが存在するパスがわかります。

Environment.CurrentDirectory;

そうでない場合は、次のことを試すことができます。

Directory.GetParent(Assembly.GetEntryAssembly().Location).FullName

よりハッキーですが、機能的な方法:

Path.GetFullPath("a").TrimEnd('a')

:)

于 2008-10-14T04:06:52.697 に答える